如何在 C# 中将十六进制字符串转换为字节

本文关键字:字符串 转换 字节 十六进制 | 更新日期: 2023-09-27 18:33:59

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

string a = "0x2B";

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

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

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

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

正确的代码是什么?

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

例如:

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

如何在 C# 中将十六进制字符串转换为字节

您必须

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

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

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

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

更新:

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

原答案:

尝试使用以下方法:

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

您可以使用 UTF8 编码:

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