Sec*_*ech 4 java android tcp type-conversion endianness
我正在使用 Android Studio 构建一个应用程序,在我的项目中,我需要进行大量转换,例如短/整型到字节数组。我还希望我的应用程序从用 C 编码的机器人接收数据,并且机器人发送一个包含大量 uint16-32、int16-32...的结构。我发现了很多对我有帮助的帖子和代码将我的属性转换为字节数组,但我总是看到人们谈论小端和大端,但我无法理解其中的区别。如果有人可以向我解释一下......注意:机器人通过 TCP 协议的 Wifi 套接字发送数据
小智 5
Little Endian 和 Big Endian 只是指数据结构字节的呈现顺序。
想象一下,您有一个由十六进制值 0xabcd 表示的 16 位整数。因为 8 位 = 1 个字节,所以我们的整数由两个字节 ab 和 cd 组成。在 Big Endian 系统中,最高有效字节放置在较低的内存地址中,而在 Little Endian 系统中,我们将它们放置在较高的内存地址中。
为了直观地显示这一点,假设我们将整数放在内存地址 0 处。
在 Big Endian 系统中,我们的内存将如下所示:
Memory address -> | 0 | 1 |
Value -> | ab | cd |
Run Code Online (Sandbox Code Playgroud)
在 Little Endian 系统中,它看起来像这样:
Memory address -> | 0 | 1 |
Value -> | cd | ab |
Run Code Online (Sandbox Code Playgroud)
传统上,网络字节顺序是 Big Endian。
归档时间: |
|
查看次数: |
4223 次 |
最近记录: |