首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现二进制协议Java

实现二进制协议Java
EN

Stack Overflow用户
提问于 2014-04-10 03:06:56
回答 2查看 280关注 0票数 0

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

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

在搜索了一下之后,我看到了一些关于字节顺序之类的帖子,但它并没有给我一个真正的答案。

我怎样才能使存储在Java语言变量中的位和C++中的一样对齐?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-04-10 03:13:25

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

Java中的标准API有许多使用big-endian字节顺序的类,因此您可以像使用标准一样使用它。例如,要在C++中正确接收这些参数,您可以使用ntohlntohs函数进行转换。

票数 1
EN

Stack Overflow用户

发布于 2014-04-10 03:38:03

我解决了!这是一个字符顺序的问题。我使用ByteBuffer的order()方法解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22971805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档