[编织消息框架][设计协议]大小端模式

理论部分

big endian 大端模式指数据高位保存在内存低位,数据低位保存在内存高位

little endian 小端模式与大端相反

用图来说明

小结:以short类型转换为例:big endian 1至255写高八位(红色),256至65535写进低八位(黑色)

动手看看

本项目源码 PacketUtil writeLong,writeShort,writeInt,writeByte,writeBoolean

与其相应读回 readLong,readShort,readInt,readByte,readBoolean

动手实践

代码实现

以写入short类型为例说明,一个short占两个byte(ret=new byte[2]) 先在高位 ret[1] 写入低数值 ,再过通右移一个byte位写入相应的 ret[0]

 1         short v = 256;
 2         byte[] ret = new byte[2];
 3         ret[0] = (byte) (v >> 8);
 4         ret[0 + 1] = (byte) (v);
 5 
 6         System.out.println("低八位数值 :" +ret[0] + " 高八位数值:"+ret[1]);
 7         System.out.println("==================");
 8 
 9         v = 1;
10         ret = new byte[2];
11         ret[0] = (byte) (v >> 8);
12         ret[0 + 1] = (byte) (v);
13         System.out.println("低八位数值 :" +ret[0] + " 高八位数值:"+ret[1]);
低八位数值 :1 高八位数值:0
==================
低八位数值 :0 高八位数值:1

将二进制转换成数字,还是以上面代码为例

1         short n1 = (short) ((ret[0] & 0xFF) << 8);
2         short n2 = (short) (ret[0 + 1] & 0xFF);
3         short n = (short) (n1 | n2);
4         System.out.println("转换成数字 :" + n);
转换成数字 :256

一个short占两个byte 就要算出每个byte对于数值 再"加"起来

&FF 是&255 意思是执行清位数据把不必要的肮数据去掉,保留一个byte范围数值

<<8 是左移一个byte位置,还原数值

再后每个byte的数值"加"起来

理解需求

将一个数值分两段保存,读回时将两段数据读出还原

思考

为什么要转换成大小端?

对于人类来说是处理明文,但对于计算机来讲是二进制,所以要转换成二进制才能正常处理

为什么一般是大端模式?

网络传输默认是大端模式,至于为什么我也不清楚

作者:solq
博客地址:http://www.cnblogs.com/solq111
博客版权:本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。 淘宝店: 海豚极货店 QQ群:9547527java技术交流
如果你热爱生活、热爱编程、热爱吉他。扫一扫加我微信
我的新书《编织消息框架》目前进行中,感谢大家关注!
知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。


[编织消息框架]目录

[编织消息框架]前言

[编织消息框架][设计协议]bit基础

[编织消息框架][设计协议]位运算

[编织消息框架][设计协议]大小端模式

[编织消息框架][设计协议]包

[编织消息框架][设计协议]优化long,int转换

[编织消息框架][设计协议]解决粘包半包(上)

[编织消息框架][设计协议]解决粘包半包(中)

[编织消息框架][设计协议]解决粘包半包(下)

[编织消息框架][设计协议]opCode

[编织消息框架][消息处理模式]请求响应模式

[编织消息框架][消息处理模式]发布订阅模式

[编织消息框架][消息处理模式]推拉模式

[编织消息框架][消息处理模式]管道模式

[编织消息框架][分层模型设计]系统与应用

[编织消息框架][分层模型设计]会话与节点

[编织消息框架][JAVA核心技术]异常基础

[编织消息框架][JAVA核心技术]异常应用

原文地址:https://www.cnblogs.com/solq111/p/6445934.html