繁体   English   中英

在Java中从C读取长字节

[英]reading long bytes from c in java

我必须从我的c程序中发送一个长字节,以便使用字节缓冲区在java代码中进行读取。 我做错了什么,因为我无法发送1234并在Java中读回它,因为它已损坏为564049465049088。

在我的C代码中

int64_t resultl = 1234;

然后复制

uint8_t * outBuffer <== pointer to the buffer;
memcpy(outBuffer,&resultl,8);

在java中,我读回字节为

ByteBuffer buf = ByteBuffer.wrap(bytes);

offset=0;
long l = buf.getLong(offset);

这是错误的值564049465049088,因为我从C发送了1234; 有人可以建议我做错了什么,我该如何纠正。

您必须更改ByteBuffer的字节序:

ByteBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN);

因为您可能使用的是低端计算机系统(x86和大多数ARM系统)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM