是否有一个内置函数来扩展一个byte []在开头留下零?

时间:2015-07-23 18:29:51

标签: c# bitconverter

我有这段代码

BitConverter.GetBytes(width).CopyTo(resultBytes, 0);

如果宽度为12,则返回一个字节而不是4,是否有内置函数来调整数组的大小,在开头留下0 输出[0,0,0,12]而不是[12]。

3 个答案:

答案 0 :(得分:2)

width的类型是什么?位转换器只是将类型转换为适当大小的数组。如果你说

long  x = 1 ;
int   y = 2 ;
short z = 3 ;

byte[] x_bytes = BitConverter.GetBytes(x) ;
byte[] y_bytes = BitConverter.GetBytes(y) ;
byte[] z_bytes = BitConverter.GetBytes(z) ;

您将分别返回8字节,4字节和2字节数组。你可以施放到所需的类型:

byte[] bytes = BitConverter.GetBytes( (int) x ) ;

如果你说像

那样的话
byte[] bytes = BitConverter.GetBytes(1) ;

您将获得一个包含4个字节的数组:未填充的整数文字的类型是最适合的类型,按优先顺序排列:intuint,{ {1}},long。如果文字是后缀,则它将是后缀指定的类型(例如,ulong将为您提供8字节1L)。

如果要转换表达式,例如:

long

转换的内容当然是通过评估表达式产生的类型。

答案 1 :(得分:1)

您需要将width投射到int以获得4个字节,因为GetBytes() is dependent on the type passed in的结果:

    BitConverter.GetBytes((int)width).CopyTo(resultBytes, 0);

答案 2 :(得分:0)

也许这是最简单的解决方案,但是Array.Reverse

BitConverter.GetBytes(4).CopyTo(resultBytes, 0); // [4, 0, 0, 0]
Array.Reverse(resultBytes); // [0, 0, 0, 4]