12

如何将此字符串转换为字节?

string a = "0x2B";

我试过这段代码,(byte)(a); 但它说:

无法将类型字符串转换为字节...

当我尝试这段代码Convert.ToByte(a);和 thisbyte.Parse(a);时,它说:

输入字符串的格式不正确...

什么是正确的代码?

但是当我在一个数组中声明它时,它是可以接受的......

例如:

byte[] d = new byte[1] = {0x2a};
4

5 回答 5

13

您必须指定要使用的基数,Convert.ToByte因为您的输入字符串包含一个十六进制数字:

byte b = Convert.ToByte(a, 16);
于 2012-05-11T18:41:46.553 回答
5
byte b = Convert.ToByte(a, 16);
于 2012-05-11T18:43:16.783 回答
4

您可以使用Convert助手类的ToByte函数:

byte b = Convert.ToByte(a, 16);
于 2012-05-11T18:39:24.633 回答
2

您可以使用UTF8Encoding

public static byte[] StrToByteArray(string str)
{
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
    return encoding.GetBytes(str);
}
于 2012-05-11T18:44:26.120 回答
2

更新:

正如其他人所提到的,我最初使用byte.Parse()with 的建议NumberStyles.HexNumber实际上不适用于带有“0x”前缀的十六进制字符串。最好的解决方案是Convert.ToByte(a, 16)按照其他答案中的建议使用。

原答案:

尝试使用以下内容:

byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
于 2012-05-11T18:39:06.437 回答