日期:2014-05-17  浏览次数:21108 次

关于协议中某个字节大于255怎么办
协议规则 : 【报文头规定死的】- 【数据块长度】 - 【数据块】 - 【校验】

这里问题在于数据块的长度大于255了 ,不能2个字节表示 ,下来怎么办。有什么办法解决?

 如:正常下发 byte[] = {0x**,0x**,0x**,0x**}
 
  不正常的是 这个数据块长度转场16进制是12C 大于255了 写成0x12C 不行。有什么办法处理

------解决方案--------------------
1个 字节 可以表示1个byte
2个字节可以表示1个short
4个字节可以表示1个int

只不过你需要自实现 bytes2short, bytes2int 这样几个方法而已.

别人给你定义 的 包长 是个 2字节的 short 而不是1字节的byte. 

找点网络编程源码看看吧. 否则以后你会遇到更多问题
------解决方案--------------------
刚没太明白, 后来仔细看了下, 还是不明白.
可能你本身不懂, 所以也描述不清楚.


我看到你有说别人和你约定的包长是1字节对吧?

那也行啊. 你就把这个本身有 300个字节的包 分成2个协议下发.
再要么就 和对方约定, 扩大 包长的定义. 不要定义成1字节的包长

再要么就检查包体内容, 看看是否有不重要的数据, 把不重要的数据删了即可.

话说. 如果包的所有传输都是定死的话. 这个时候你的包长还超过了约定数, 那么肯定就是你在 转换数据成byte[] 的时候出了什么幺蛾子. 否则是不会导致这样的.

按理, 正常情况下, 你应该至会获得一个 小于 255 长度的byte[]