java 中的 int 和 c 中的 unsigned int 之间的处理

2015-10-27 20:42:25 +08:00
 vikeria
项目原因,需要和 c 进程进行交互,使用 netty 发字节流消息。比如说定义接口
c 端结构体有 unsinged int 字段, java 端如何定义呢, int 的话会比 c 端能取到的值要小,使用 long 的话,像 buffer 中写入时字节又过多。
求解各位是怎么解决的呢?
2801 次点击
所在节点    Java
7 条回复
ljbha007
2015-10-27 20:57:34 +08:00
如果 C 那边 int 是 32 位的话 那 java 只能用 long 写字节流的时候自己手动 把最后 32 位写到字节流里
SoloCompany
2015-10-28 02:52:59 +08:00
read / write 用 int ,使用的时候可以赋值给 long ,对于小于 0 的 int 赋值后要加上 4G
vikeria
2015-10-28 11:50:01 +08:00
@SoloCompany 呃,能问下 4G 是什么吗- -
Comdex
2015-10-28 13:09:49 +08:00
不明觉厉
vikeria
2015-10-28 16:03:56 +08:00
@Comdex 嘛~有点困扰的小问题,一般内网系统也不会取到那么大的值,除非运行了好多好多年了
SoloCompany
2015-10-28 16:29:13 +08:00
@vikeria x = x & 0xFFFFFFFFL
vikeria
2015-10-28 17:11:19 +08:00
@SoloCompany soga. thx a lot.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231548

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX