如何用自己的字节创建字节数组?

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)

我不知道必须使用什么类型的变量来自动替换数组值。

fej*_*oco 6

将您的 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”前缀。完全省略那部分会更容易,但你的问题并不完全清楚。