为了账号安全,请及时绑定邮箱和手机立即绑定

C# 十六进制到字节数组循环

C# 十六进制到字节数组循环

C#
MM们 2021-06-29 09:51:35
我有以下功能:    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
提交
取消
意见反馈 帮助中心 APP下载
官方微信