BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #48503同步于 2016/3/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

c结构体转java?

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