0

我在将一个双精度数组从 C 应用程序发送到 Java 应用程序(通过 UDP)时遇到问题。

目前我正在投射我的双重数据,就像这样

char* dataChars = (char*) dataDoubles;
int charsLen = sizeof(double)*doublesLen;

并通过 UDP 将此数据发送到 java,后者会得到一个包含正确数量的 java 双条目的数据包(即双精度似乎在两者中的大小相同)。

在 java 端,我收到一个字节 [],然后我正在使用:

ByteArray b = ByteArray.wrap(byteData);
for(...){
   doubleData[i] = b.getDouble();
}

当我发送一个包含在 C 中定义的数据的数据包时

double TEST_DATA[4] = {1.0, 2.0, 4.0, 8.0};

在java中我得到,可靠

 3.03865E-319 3.16E-322 2.0553E-320 4.079E-320

看起来这些位被打乱了,但我不知道什么会纠正这个问题。

4

1 回答 1

0

正如 Miky Denescu 所建议的,以下修改解决了该问题:

doubleData[i] = b.order(ByteOrder.LITTLE_ENDIAN),getDouble();
于 2013-03-13T16:09:12.523 回答