数组通信:将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 

它看起来像变得乱七八糟,但我不知道什么会纠正这一点。

+0

好像你需要确保该字节发送和在一个正确的顺序解码。另外,你可能想使用和(unsigned char *) – 2013-03-13 15:50:19

至于建议的Miky Denescu的,下面modifiation解决了这个问题:

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