我正在使用C#尝试将字符串值转换为字节。似乎比我预期的更难。基本上我有一个名为hex =“0x32”的字符串,需要字节块来等于这个值。
string hex = "0x32";
byte block = Convert.ToByte(hex);
以上不起作用,是否有人知道如何将十六进制值成功分配给字节。我需要在代码中稍后将此字节附加到字节数组中。
答案 0 :(得分:4)
尝试以下
byte block = Byte.Parse(hex.SubString(2), NumberStyles.HexNumber);
SubString
调用的原因是从字符串中删除前面的“0x”。即使指定了NumberStyles.HexNumber
,Parse函数也不会指望“0x”前缀,如果遇到则会出错
答案 1 :(得分:2)
Convert.ToByte(hex, 16)
答案 2 :(得分:1)
string hex = "0x32";
int value = Convert.ToInt32(hex, 16);
byte byteVal = Convert.ToByte(value);
会工作......
修改强>
一些代码来证明0x32(十六进制)和50(整数)是相同的。
string hex = "0x32";
byte[] byteVal = new byte[1];
byteVal[0] = Convert.Byte(hex, 16);
Console.WriteLine(byteVal[0] + " - Integer value");
Console.WriteLine(BitConverter.ToString(byteVal) + " - BitArray representation");;