将int转换为不同大小的字节数组
Convert int to different size of byte array
我有一个字节数组result
。我想将我的名为 Info
的类型转换为字节数组,但它们的大小都不同。
a = 4 bytes
b = 3 bytes
c = 2 bytes
d = 1 bytes
这是我试过的代码。
private byte[] getInfoByteArray(Info data)
{
byte[] result = new byte[10];
BitConverter.GetBytes((data.a)).CopyTo(result, 0);
BitConverter.GetBytes((data.b)).CopyTo(result, 4);
BitConverter.GetBytes((data.c)).CopyTo(result, 7);
result [9] = Convert.ToByte(data.d);
return result;
}
然而,我发现 BitConverter.GetBytes
returns 4 个字节。
是否有任何通用解决方案可以将不同大小的字节转换为字节数组?
使用Array.Copy(Array, Int32, Array, Int32, Int32)
方法:
byte[] result = new byte[10];
Array.Copy(BitConverter.GetBytes(data.a), 0, result, 0, 4);
Array.Copy(BitConverter.GetBytes(data.b), 0, result, 4, 3);
Array.Copy(BitConverter.GetBytes(data.c), 0, result, 7, 2);
Array.Copy(BitConverter.GetBytes(data.d), 0, result, 9, 1);
这假设小端硬件。如果您的硬件是大端,请使用
byte[] result = new byte[10];
Array.Copy(BitConverter.GetBytes(data.a), 0, result, 0, 4);
Array.Copy(BitConverter.GetBytes(data.b), 1, result, 4, 3);
Array.Copy(BitConverter.GetBytes(data.c), 2, result, 7, 2);
Array.Copy(BitConverter.GetBytes(data.d), 3, result, 9, 1);
我有一个字节数组result
。我想将我的名为 Info
的类型转换为字节数组,但它们的大小都不同。
a = 4 bytes
b = 3 bytes
c = 2 bytes
d = 1 bytes
这是我试过的代码。
private byte[] getInfoByteArray(Info data)
{
byte[] result = new byte[10];
BitConverter.GetBytes((data.a)).CopyTo(result, 0);
BitConverter.GetBytes((data.b)).CopyTo(result, 4);
BitConverter.GetBytes((data.c)).CopyTo(result, 7);
result [9] = Convert.ToByte(data.d);
return result;
}
然而,我发现 BitConverter.GetBytes
returns 4 个字节。
是否有任何通用解决方案可以将不同大小的字节转换为字节数组?
使用Array.Copy(Array, Int32, Array, Int32, Int32)
方法:
byte[] result = new byte[10];
Array.Copy(BitConverter.GetBytes(data.a), 0, result, 0, 4);
Array.Copy(BitConverter.GetBytes(data.b), 0, result, 4, 3);
Array.Copy(BitConverter.GetBytes(data.c), 0, result, 7, 2);
Array.Copy(BitConverter.GetBytes(data.d), 0, result, 9, 1);
这假设小端硬件。如果您的硬件是大端,请使用
byte[] result = new byte[10];
Array.Copy(BitConverter.GetBytes(data.a), 0, result, 0, 4);
Array.Copy(BitConverter.GetBytes(data.b), 1, result, 4, 3);
Array.Copy(BitConverter.GetBytes(data.c), 2, result, 7, 2);
Array.Copy(BitConverter.GetBytes(data.d), 3, result, 9, 1);