数组通信:将C双精度转换为字符,然后将java字节转换为双精度数

时间:2013-03-13 15:47:32

标签: types interface

我无法将C应用程序中的双打数组发送到Java应用程序(通过UDP)。

目前我正在投射我的双重数据,例如

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

并通过UDP将此数据发送到java,后者获取包含正确数量的java双重条目的数据包(即两者的大小似乎相同)。

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

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

看起来这些比特正在变得混乱,但我不知道会纠正这个问题。

1 个答案:

答案 0 :(得分:0)

正如Miky Denescu所说,以下修改解决了这个问题:

doubleData[i] = b.order(ByteOrder.LITTLE_ENDIAN),getDouble();