0

CアプリケーションからJavaアプリケーション(UDP経由)にdoubleの配列を送信するのに問題があります。

現時点では、このようにダブルデータをキャストしています

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

そして、このデータをUDP経由でjavaに送信します。これにより、正しい数のjava doubleエントリを含むパケットが取得されます(つまり、doubleは両方で同じサイズのようです)。

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

ビットがスクランブルされているように見えますが、これを修正する方法がわかりません。

4

1 に答える 1

0

Miky Denescuが示唆しているように、次の変更で問題が解決します。

doubleData[i] = b.order(ByteOrder.LITTLE_ENDIAN),getDouble();
于 2013-03-13T16:09:12.523 に答える