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