如何将数字插入4个字节

时间:2014-05-24 15:51:12

标签: c# .net

我有1和4个字节代表我的值(在这是 - 1),我想将这个数字插入我的字节,所以它需要是00 00 00 01这就是我尝试过的结果是10 00 00 00

array[Index + 2] = (byte)(num & 0xFF);
array[Index + 3] = (byte)((num>> 8) & 0xFF);
array[Index + 4] = (byte)((num>> 16) & 0xFF);
array[Index + 5] = (byte)((num>> 24) & 0xFF);

我很乐意提供帮助

3 个答案:

答案 0 :(得分:1)

这就是你想要的。

array[Index + 5] = (byte)(num & 0xFF);
array[Index + 4] = (byte)((num>> 8) & 0xFF);
array[Index + 3] = (byte)((num>> 16) & 0xFF);
array[Index + 2] = (byte)((num>> 24) & 0xFF);

num & 0xFF除了第一个最右边的8之外,它将使所有位为0。

答案 1 :(得分:1)

使用位转换器:

byte[] numberToByteArray = BitConverter.GetBytes(1);

其中一个将位于numberToByteArray [0]中最不重要的单元格中,即:00 00 00 01

如果你想让值在numberToByteArray [3]中 - 反转结果:

byte[] reversedResult = numberToByteArray.Reverse().ToArray();

反转之后,结果是:01 00 00 00

答案 2 :(得分:0)

您的示例似乎是混合的,通常代表小数1,您将拥有00 00 00 01(大端),01 00 00 00(小端)或00 01 00 00(中间) -endian)。您所拥有的内容似乎与中间端类似,但在字节级别上。

你必须自己翻转小块:

var Index = 0;
var array = new byte[7];
var num = 0x87654321;

var t = num;
array[Index + 2] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4); t >>= 8;
array[Index + 3] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4); t >>= 8;
array[Index + 4] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4); t >>= 8;
array[Index + 5] = (byte)((t & 0xF) << 4 | (t & 0xf0) >> 4);

Console.Writeline("{0:X2} {1:X2} {2:X2} {3:X2}", array[2], array[3], array[4], array[5]);
// prints: 12 34 56 78

编辑:如果您正在寻找它是大端的话,那么哈姆雷特哈博伊恩的答案是恰当的。