我该如何将这个字符串转换为字节?
string a = "0x2B";
我尝试了这段代码 (byte)(a); 但它显示:
无法将类型字符串转换为字节...
当我尝试使用这段代码 Convert.ToByte(a);
和 byte.Parse(a);
时,它们显示:
输入字符串不符合正确的格式...
这应该用什么样的代码呢?
但是,例如在一个数组中声明它时,它是可以接受的...
例如:
byte[] d = new byte[1] = {0x2a};
由于您的输入字符串包含十六进制数字,因此在Convert.ToByte
中必须指定要使用的基数:
byte b = Convert.ToByte(a, 16);
byte b = Convert.ToByte(a, 16);
更新:
正如其他人所提到的,我原来建议使用 byte.Parse()
与 NumberStyles.HexNumber
在带有 "0x" 前缀的十六进制字符串中实际上不起作用。最好的解决方案是使用其他答案中建议的 Convert.ToByte(a, 16)
。
原始答案:
Try using the following:
byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
您可以使用UTF8Encoding:
public static byte[] StrToByteArray(string str)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(str);
}