PHP 里我知道,直接 unpack('d1double',strrev(hex2bin('0x405C7AEDF78A0FB9')))['double'] 就可以得到结果。
但是 JAVA 里,搜索引擎找了好久,也没有找到正确的方法。
求,做过的告知,谢谢!
但是 JAVA 里,搜索引擎找了好久,也没有找到正确的方法。
求,做过的告知,谢谢!
1
ryd994 Mar 14, 2017 1. 这和进制无关,就是单纯的二进制解读
2. Google "java unpack binary float" 大体上就是转成二进制整数然后 intBitsToFloat |
2
qiayue OP PRO @ryd994 你说对了,一言点醒懵中人
String hex = "405C7AEDF78A0FB9"; long l = Long.parseLong(hex, 16); double b = Double.longBitsToDouble(l); 我终于知道为什么网上相关资料少了,因为其他人压根不认为这是一个问题,我钻牛角尖了。 试过好多种办法,都不行,以为是一个大难题。 结果,原来如此简单。 |
3
SoloCompany Mar 14, 2017 提醒一下,由于有符号位的问题,你可能需要 parseUnsignedLong (不幸的是,需要 java8)
|