gpt4 book ai didi

java - 在java中从c读取长字节

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:06 25 4
gpt4 key购买 nike

我必须从我的 c 程序发送一个 long 以使用字节缓冲区在 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 系统)。

关于java - 在java中从c读取长字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com