|
|
1
3
正如@Vovanium所指出的,您得到的是double的long long值,对于您的例子,它将返回-13456。没有分数,没有指数。
请注意,根据 JavaDocs for Double ,Java希望位具有特定的顺序。如果从double转换为unsigned long long long不产生该位顺序,则会得到不正确的值。在这种情况下,可能需要在发送之前重新排列位。 位63(掩码0x80000000000000L选择的位)表示浮点数的符号。位62-52(由掩码0x7ff0000000000000L选择的位)表示指数。位51-0(由掩码0x000fffffffffffl选择的位)表示浮点数的有效位(有时称为尾数)。 更新:
尝试使用值-1.0进行测试。a-1.0的IEEE 754位模式是:
当序列化时,字节将是
如果得到这些字节:
将我的示例代码中的行更改为
这正好颠倒了long long被解码的顺序。 |
|
|
2
2
ObjC代码传输长整数的位模式(由unsignedLongLongValue得到),Java代码试图将其解释为double的位模式。当作为ULL访问doubleValue时,应该使用doubleValue获得double的位模式。
|
|
|
3
1
|