我必须创建自己的字节数组,例如:
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, 0x07 };
这个字节数组工作正常,但我需要更改一些十六进制代码。我尝试做了很多改变但是 没有人工作。
Int32 hex = 0xA1;
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};
string hex = "0xA1";
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};
byte[] array = new byte[1];
array[0] = 0xA1;
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, array[0]};
我不知道我必须使用什么类型的变量来替换自动数组值。
答案 0 :(得分:4)
将你的int转换为byte:
Int32 hex = 0xA1;
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, (byte)hex};
或者将其定义为开头的字节:
byte hex = 0xA1;
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};
字符串到字节转换:
static byte hexstr2byte(string s)
{
if (!s.StartsWith("0x") || s.Length != 4)
throw new FormatException();
return byte.Parse(s.Substring(2), System.Globalization.NumberStyles.HexNumber);
}
如您所见,.NET格式支持六位数,但不支持“0x”前缀。完全省略该部分会更容易,但你的问题并不完全清楚。
答案 1 :(得分:3)
声明它可能是“字节十六进制= 0xA1”吗?