Java中的Little Endian和Big Endian(Android)
作者:互联网
我正在使用Android Studio构建应用程序,并且在我的项目中,我需要进行很多转换,例如将short / int转换为字节数组.我还希望我的应用程序从使用C语言编码的机器人接收数据,并且该机器人发送的结构中包含很多uint16-32,int16-32….
我发现了很多帮助我将字节数组中的属性转换为我的帖子和代码,但是我总是看到人们在谈论Little Endian和Big Endian,而我却无法理解它们之间的区别.如果有人可以向我解释….
注意:机器人通过具有TCP协议的Wifi套接字发送数据
解决方法:
Little Endian和Big Endian只是指数据结构字节的显示顺序.
想象一下,您有一个由十六进制值0xabcd表示的16位整数.因为8位= 1个字节,所以我们的整数由两个字节ab和cd组成.在Big Endian系统中,最高有效字节位于较低的内存地址中,而在Little Endian系统中,我们将其置于较高的字节中.
为了直观地显示这一点,假设我们将整数放在内存地址0处.
在Big Endian系统中,我们的内存如下所示:
Memory address -> | 0 | 1 |
Value -> | ab | cd |
在Little Endian系统中,它看起来像这样:
Memory address -> | 0 | 1 |
Value -> | cd | ab |
传统上,网络字节顺序是Big Endian.
标签:tcp,endianness,type-conversion,java,android 来源: https://codeday.me/bug/20191027/1941201.html