没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
JAVA 网络字节序转换
字节序指的是数据存储的顺序问题,分为 Big-Endian 和 Little-Endian,Big-Endian 指的是
数据中的高位存储在存储器的低位,Little-Endian 正好相反。Big-Endian 也叫大头在前,
Little-Endian 叫做小头在前。
举例而言,有一个 4 字节的数据 0x01020304,要存储在内存中或文件中编号 0~3 字节的
位置,两种字节序的排列方式分别如下:
Big Endian
低地址 高地址
----------------------------------------->
地址编号
| 0 | 1 | 2 | 3 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 01 | 02 | 03 | 04 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Little Endian
低地址 高地址
----------------------------------------->
地址编号
| 0 | 1 | 2 | 3 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 04 | 03 | 02 | 01 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
如果按照我们一般的书写习惯来说,Big-Endian 似乎更好一点。
具体应用中是用 big 还是 little 就要取决于系统平台了。不同的 CPU 会有不同的情况,比如
说 x86 架构的 cpu 使用的是 little 模式,而 PowerPC 则是 big。C/C++语言对数据的处理取
决于其运行的 CPU,而 Java 则统一使用 big 模式。
如果单纯仅是使用 Java 的话也就不存在大小字节序的处理问题,但有时候 Java 程序可能
还要使用到 C/C++这类语言生成的数据,尤其是在我们常用 x86 环境下,两种语言的字节
序就会出现不一致的问题,必须做一定的处理。
处理的方法很简单,就是把数据按字节前后调换一下就可以了。
在这里是将长度为 len 的数据转换成字节数组 str[len],带入以下函数,如果原始数据是
little,也就是 big=false 的情况下,函数将对数据进行高低位的调换,并返回。
publicstaticbyte[] ReversEndian(byte str[],int len, boolean big)
{
byte b;
byte res[]=newbyte[len];
for(int i=0;i<len;i++)
{
乐居买房
- 粉丝: 20
- 资源: 311
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 126641091882064LSPatch.apk
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0