Cat*_*tao 2 c# arrays hex bytearray
我必须创建自己的字节数组,例如:
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, 0x07 };
Run Code Online (Sandbox Code Playgroud)
这个字节数组工作正常,但我需要更改一些十六进制代码。我试图做很多改变,但没有一个成功。
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]};
Run Code Online (Sandbox Code Playgroud)
我不知道必须使用什么类型的变量来自动替换数组值。
将您的 int 转换为字节:
Int32 hex = 0xA1;
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, (byte)hex};
Run Code Online (Sandbox Code Playgroud)
或者将其定义为字节开头:
byte hex = 0xA1;
byte[] connect = new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1, hex};
Run Code Online (Sandbox Code Playgroud)
字符串到字节的转换:
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);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,.NET 格式支持十六进制数字,但不支持“0x”前缀。完全省略那部分会更容易,但你的问题并不完全清楚。