如何在C#中将字符串转换为字节?

时间:2012-05-11 18:36:12

标签: c# string byte

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

string a = "0x2B";

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

  

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

当我尝试使用此代码Convert.ToByte(a);和此byte.Parse(a);时,它说:

  

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

适当的代码是什么?

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

例如:

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

5 个答案:

答案 0 :(得分:13)

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

byte b = Convert.ToByte(a, 16);

答案 1 :(得分:5)

byte b = Convert.ToByte(a, 16);

答案 2 :(得分:4)

您可以使用ToByte帮助程序类的Convert函数:

byte b = Convert.ToByte(a, 16);

答案 3 :(得分:2)

<强>更新

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

原始答案:

  

尝试使用以下内容:

byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture);

答案 4 :(得分:2)

您可以使用UTF8Encoding

public static byte[] StrToByteArray(string str)
{
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
    return encoding.GetBytes(str);
}