我有以下功能: public void SetTagData(string _data) { string data = _data; byte[] ba = Encoding.Default.GetBytes(data); string hexString = BitConverter.ToString(ba); hexString = hexString.Replace("-", ""); var blockStart = 0; var bufferHexBlocks = String.Empty; try { for (var i = 0; i < hexString.Length; i++) { var byteList = new List<byte>(); byte[] datablockKey = ConvertHelpers.ConvertHexStringToByteArray(i.ToString().PadLeft(2, '0')); var block = hexString.Substring(blockStart, 8); byte[] datablockValue = ConvertHelpers.ConvertHexStringToByteArray(block); byteList.AddRange(datablockKey); byteList.AddRange(datablockValue); _reader.Protocol("wb", byteList.ToArray()); blockStart += 8; } } catch (Exception ex) { console.log(ex.message); } }传入的数据是一堆十六进制字符串。我需要将此十六进制字符串拆分为 8 个字符的批次,从00to附加一个递增的 0 填充十六进制数1f,并将此新字符串作为字节数组发送到_reader.Protocol函数,该函数接受一个字符串wb作为第一个参数,将块作为第二个参数。例如传入的数据是:string data = "3930313B36313B5350542D53504C3B3830303B3B352E373B3B303B303B3B3B34353036383B4E3B4E3B"我需要将以下内容发送到_reader.Protocol对象:(增量填充的十六进制01, 02, 03, ... , 0f)和数据字符串的前 8 个字符,然后是下一个,依此类推作为字节数组。 [013930313B],[0236313B53]等等。我想我已经接近了……但错过了一些东西……我目前的问题是我不知道如何在 8 个块中循环,如果十六进制字符串是 82 个字符而不是 80 个(8 的倍数),那么我将如何获取最后两个字符而不会得到一个IndexOutofRange 异常。注意:这是针对 Windows CE 应用程序的,因此请不要使用新的 C# 功能。
2 回答
- 2 回答
- 0 关注
- 255 浏览
添加回答
举报
0/150
提交
取消