【问题标题】:Array communication: convert C doubles to chars, then java bytes to doubles数组通信:将 C 双精度转换为字符,然后将 Java 字节转换为双精度
【发布时间】:2013-03-13 15:47:32
【问题描述】:

我在将双精度数组从 C 应用程序发送到 Java 应用程序(通过 UDP)时遇到问题。

目前我正在投射我的双重数据,就像这样

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

并通过 UDP 将此数据发送到 java,后者会得到一个包含正确数量的 java double 条目的数据包(即 double 似乎在两者中的大小相同)。

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

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

看起来这些位被打乱了,但我不知道如何解决这个问题。

【问题讨论】:

  • 您似乎需要确保以正确的字节顺序发送和解码字节。此外,您可能想使用 and (unsigned char*)

标签: types interface


【解决方案1】:

根据 Miky Denescu 的建议,以下修改解决了该问题:

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

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2013-03-10
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多