实现二进制协议Java

时间:2014-04-09 19:06:56

标签: java android serialization binary

我正在尝试在Java Android应用程序中实现二进制协议。此协议中的变量是无符号的,可以是uint32,uint16或uint8。

我在发送整数值时遇到问题。例如,当我尝试发送值为1的short时,服务器(用C ++编写)的值为256.

在搜索了一下后,我看到一些帖子谈论了endianess,但它并没有给我一个答案。

我如何能够以与C ++相同的方式将Java中变量中存储的位对齐。

谢谢

2 个答案:

答案 0 :(得分:1)

C ++没有定义存储多字节整数中字节的顺序。你应该选择一个标准,并确保每个人都使用它。

Java中的标准API有许多使用big-endian字节顺序的类,因此您不妨将其用作标准。要在C ++中正确接收这些内容,您可以使用ntohlntohs函数进行转换,例如。

答案 1 :(得分:0)

我解决了!这是一个关于endianess的问题。我使用ByteBuffer的order()方法解决了它。