你的例子似乎混合,通常情况下,要表示小数点1,您应该有00 00 00 01
(大端),01 00 00 00
(小端)或00 01 00 00
(中端)之一。你所看到的似乎与中端,但在字节级。
你将不得不自己翻转半字节:
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
编辑:,如果你正在寻找它是大端,然后哈姆雷特Hakobyan的回答是适当的。
字节顺序呢? –
我编辑了一下回复以显示字节顺序。 – PiotrWolkowski
这也是不便携的。 'BitConverter'根据执行的CPU的字节顺序返回不同的值。要跨平台工作,请检查“BitConverter.IsLittleEndian”。 – Mitch