将int转换为不同大小的字节数组

时间:2016-09-07 02:17:21

标签: c# byte bytearray

我有一个字节数组result。我想将名为Info的类型int转换为字节数组,但所有类型的大小都不同。

  

a = 4个字节

     

b = 3个字节

     

c = 2个字节

     

d = 1个字节

这是我尝试的代码。

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返回4个字节。

是否有任何通用解决方案可以为字节数组提供不同的字节大小?

1 个答案:

答案 0 :(得分:1)

使用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);