V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vikeria
V2EX  ›  Java

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

  •  
  •   vikeria · 2015-10-27 20:42:25 +08:00 via Android · 2805 次点击
    这是一个创建于 3350 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目原因,需要和 c 进程进行交互,使用 netty 发字节流消息。比如说定义接口
    c 端结构体有 unsinged int 字段, java 端如何定义呢, int 的话会比 c 端能取到的值要小,使用 long 的话,像 buffer 中写入时字节又过多。
    求解各位是怎么解决的呢?
    7 条回复    2015-10-28 17:11:19 +08:00
    ljbha007
        1
    ljbha007  
       2015-10-27 20:57:34 +08:00
    如果 C 那边 int 是 32 位的话 那 java 只能用 long 写字节流的时候自己手动 把最后 32 位写到字节流里
    SoloCompany
        2
    SoloCompany  
       2015-10-28 02:52:59 +08:00
    read / write 用 int ,使用的时候可以赋值给 long ,对于小于 0 的 int 赋值后要加上 4G
    vikeria
        3
    vikeria  
    OP
       2015-10-28 11:50:01 +08:00
    @SoloCompany 呃,能问下 4G 是什么吗- -
    Comdex
        4
    Comdex  
       2015-10-28 13:09:49 +08:00
    不明觉厉
    vikeria
        5
    vikeria  
    OP
       2015-10-28 16:03:56 +08:00
    @Comdex 嘛~有点困扰的小问题,一般内网系统也不会取到那么大的值,除非运行了好多好多年了
    SoloCompany
        6
    SoloCompany  
       2015-10-28 16:29:13 +08:00
    @vikeria x = x & 0xFFFFFFFFL
    vikeria
        7
    vikeria  
    OP
       2015-10-28 17:11:19 +08:00
    @SoloCompany soga. thx a lot.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:59 · PVG 09:59 · LAX 17:59 · JFK 20:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.