数组通信:将C双精度转换为字符,然后将java字节数加倍
问题描述:
我无法从C应用程序向Java应用程序发送一个双精度数组(通过UDP)。数组通信:将C双精度转换为字符,然后将java字节数加倍
在我铸造我双倍数据的那一刻,这样
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
它看起来像变得乱七八糟,但我不知道什么会纠正这一点。
答
至于建议的Miky Denescu的,下面modifiation解决了这个问题:
doubleData[i] = b.order(ByteOrder.LITTLE_ENDIAN),getDouble();
好像你需要确保该字节发送和在一个正确的顺序解码。另外,你可能想使用和(unsigned char *) – 2013-03-13 15:50:19