返回信息流c语言实现的一个协议,有不同类型的数据。
现在要用java重写,结构体可以表示成类,可是属性值怎么像c一样输出到一个字节数组呢 = =?
这是一条镜像帖。来源:北邮人论坛 / java / #48503同步于 2016/3/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
c结构体转java?
godfly
2016/3/14镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
c可以定义一个结构体类型的指针指向一块内存啊
【 在 nuanyangyang 的大作中提到: 】
: 就算是C也不可以这样做的。C语言从来没有规定struct如何按字节存储。
: 如果要编码和解码的话,用java.nio.ByteBuffer吧。
为何要用Java重写呢。直接用Java的JNI接口调入C的lib库不就完了。
【 在 nuanyangyang 的大作中提到: 】
: 就算是C也不可以这样做的。C语言从来没有规定struct如何按字节存储。
: 如果要编码和解码的话,用java.nio.ByteBuffer吧。
【 在 godfly 的大作中提到: 】
: c可以定义一个结构体类型的指针指向一块内存啊
即使如此,C语言也没有规定这块内存如何表示一个结构。比如各个成员的位置、大小、字节序,以及成员之间有没有padding,以及整个struct需要不需要对齐。
【 在 FromSixToTen 的大作中提到: 】
: 为何要用Java重写呢。直接用Java的JNI接口调入C的lib库不就完了。
嗯嗯。用JNI,或者JNA或者JNR都可以直接调用C的库。
不过,用Java重写的一个好处是不需要依赖C程序,这样程序是真的跨平台的,而且不会因为C程序的bug而segmentation fault或者引入代码注入漏洞。另一个好处是可以用Java的垃圾回收,性能可以提升。
For fun。。学一下java没有指针怎么处理固定协议的数据。。
【 在 FromSixToTen 的大作中提到: 】
: 为何要用Java重写呢。直接用Java的JNI接口调入C的lib库不就完了。
用Java处理位操作实在是很蛋疼的事情。一般用Java写应用层协议的较多,写应用层一下协议的聊聊。不知楼主这是什么个需求。
【 在 nuanyangyang 的大作中提到: 】
:
: 嗯嗯。用JNI,或者JNA或者JNR都可以直接调用C的库。
: 不过,用Java重写的一个好处是不需要依赖C程序,这样程序是真的跨平台的,而且不会因为C程序的bug而segmentation fault或者引入代码注入漏洞。另一个好处是可以用Java的垃圾回收,性能可以提升。
: ...................
如果只是想学习,实在没有那个必要。Java天生不是为位操作设计的。
【 在 godfly 的大作中提到: 】
: For fun。。学一下java没有指针怎么处理固定协议的数据。。
给一台需要固定协议的机器发指令 = =
【 在 FromSixToTen 的大作中提到: 】
: 用Java处理位操作实在是很蛋疼的事情。一般用Java写应用层协议的较多,写应用层一下协议的聊聊。不知楼主这是什么个需求。