二进制协议设计记录

Posted free-wings

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制协议设计记录相关的知识,希望对你有一定的参考价值。

正向:将各类数据转换为byte[],再转16进制字符串,比如:

short,int,long:可以按8(1byte)的倍数(按各自所占byte数决定移位多少次,每次移位8的几倍数)向右移位(>>>),和0xFF按位与,取高位byte放在byte数组低索引位(大端模式),然后按byte[]的每个byte,使用Integer.toHexString获取对应16进制字符串(一个8位的byte对应2个代表4位的16进制字符),<10(1个16进制字符)的左边补0字符

字符串:按规定编码调用本身getBytes,将转换的byte[]长度(转换为byte[]后)和byte[]自身都按上面加粗表示的方法转换成16进制字符串先后写入

加密:取getBytes的byte[]进行加密,将加密后的byte[]按上述规则转换

字节流(就是byte[]):直接将byte[]长度(转换为byte[]后)和byte[]自身都按上面方法转换成16进制字符串先后写入

 

以上是关于二进制协议设计记录的主要内容,如果未能解决你的问题,请参考以下文章

dubbo协议

如何设计可向后兼容的RPC协议

编程思想:如何设计一个好的通信网络协议

Java 如何 解析二进制协议?

C# 串口操作系列 -- 协议篇,二进制协议数据解析

数据库扩展性设计:使用二进制解决一条记录关联多个状态的问题