我在将一个双精度数组从 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
看起来这些位被打乱了,但我不知道什么会纠正这个问题。