将包含十六进制值的字符串转换为字节数组

4

我有这个:

string x = "0X65 00 0X94 0X81 00 0X40 0X7E 00 0XA0 0XF0 00 0X80 0X2C 00 0XA9 0XA";

And I would like this:

byte[] x = {0X65, 00, 0X94, 0X81, 00, 0X40, 0X7E, 00, 0XA0, 0XF0, 00, 0X80, 0X2C, 00, 0XA9, 0XA};

当我尝试以下操作时:

string[] t = x.split(' ');
byte[] byte = new byte[t.Legnth];
for (int i = 0; i < byte.Length; i++)
            {
                byte[i] = Convert.ToByte(t[i]);
            }

这个字节被编码为其他的值。我对字节格式不熟悉,只是希望能够直接从由空格分隔的字节字符串转换为数组。

1个回答

16

来自微软官网:Convert.ToByte 方法 (String, Int32)

将指定基数中数字的字符串表示形式转换为等效的 8 位无符号整数。

在这种情况下,您需要告诉 ToByte 方法将字符串从16进制转换。

byte[] t = x.Split().Select(s => Convert.ToByte(s, 16)).ToArray();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接