2013-03-13 39 views
0

我無法從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

回答

0

至於建議的Miky Denescu的,下面modifiation解決了這個問題:

doubleData[i] = b.order(ByteOrder.LITTLE_ENDIAN),getDouble(); 
相關問題