java等价于php的“fnum”解包函数,用java将十六进制转换为浮点ieee754

kknvjkwl  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(202)

我在php中有一个函数:

function hex2float($strHex) {
   $array = unpack("fnum", pack("H*", $strHex));
   return $array['num'];
}

我怎么用java写呢?

gmxoilav

gmxoilav1#

我想用这种方式转换这个函数:

private Float hex2float(String hexStr) {
    Float result = null;
    try {
        byte[] decodes = Hex.decodeHex(hexStr.toCharArray());
        result = getFloat(decodes, 0);
    } catch (DecoderException e) {
        // log error
    }
    return result;
}

private float getFloat(byte[] b, int index) {
    int l;
    l = b[index + 0];
    l &= 0xff;
    l |= ((long) b[index + 1] << 8);
    l &= 0xffff;
    l |= ((long) b[index + 2] << 16);
    l &= 0xffffff;
    l |= ((long) b[index + 3] << 24);
    return Float.intBitsToFloat(l);
}

相关问题