目标是得到一个字节[16],其中第一个元素是十六进制值55,第二个元素是十六进制值AA。其他14个是十六进制值0.
我试过
byte[] outStream = System.Text.Encoding.UTF8.GetBytes("55 AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00");
但是这会使用ascii值填充byte [],而不是十六进制值。
我试过
byte[] outStream = new byte[16];
outStream[0] = byte.Parse("55");
outStream[1] = byte.Parse("AA");
for(int i=2; i<16; i++)
{
outStream[i] = byte.Parse("00");
}
但这也不起作用。它不提供十六进制值,而是在AA上崩溃的整数值,因为它不是可解析的int。
任何帮助都将不胜感激。
答案 0 :(得分:12)
您可以在C#中使用0x:
作为前缀来编写十六进制整数文字byte[] result = new byte[16];
result[0] = 0x55;
result[1] = 0xaa;
默认情况下,字节数组填充0x00,因此您只需设置前两个元素。
或者,您可以使用数组初始化语法:
byte[] result = new byte[] { 0x55, 0xaa, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
答案 1 :(得分:2)
您可以使用:byte.Parse(hex_byte_string, System.Globalization.NumberStyles.HexNumber);
或者您也可以使用:Convert.ToByte(hex_byte_string, 16);
public static byte[] ToByteArray(String HexString)
{
string hex_no_spaces = HexString.Replace(" ","");
int NumberChars = hex_no_spaces.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i+=2)
{
bytes[i / 2] = byte.Parse(hex_no_spaces.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
}
return bytes;
}
并像这样使用它:
byte[] bytez = ToByteArray("55 AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00");
答案 2 :(得分:2)
byte[] result = { 0x55, 0xaa, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };