2

考虑下面的 16 位数据包,它以网络字节顺序通过网络发送,即 Big Endian:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(字节数)
34 67 89 45 90 AB FF 23 65 37 56 C6 56 B7 00 00(值)

假设 8945 是一个 16 位的值。所有其他都是 8 位数据字节。

在我的小端系统上,如何接收和存储数据?

可以说,我们被配置为一次接收 8 个字节。RxBuff 是接收数据的 Rx 缓冲区。

Buff 是存储数据的存储缓冲区。

请指出一次读取8个字节后数据存储哪种情况是正确的: 1) Buff[] = {0x34, 0x67, 0x45, 0x89, 0x90, 0xAB....... 0x00};

2) Buff[] = {0x00, 0x00, .......0x67, 0x89, 0x45, 0x34};

整个 16 字节数据会被反转还是仅包含在该数据包中的 2 字节值?

4

1 回答 1

2

只有数据包中包含的 2 个字节值会被反转。
Endianess 关注字节顺序,而不是位顺序。

这是维基百科上的解释

于 2012-10-05T21:26:04.490 回答