Java, эквивалентный php "fnum" функция распаковки для преобразования шестнадцатеричного в плавающий IEEE 754 в Java - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть эта функция в PHP:

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

Как я могу написать это в Java?

1 Ответ

0 голосов
/ 28 мая 2019

Я рассчитывал преобразовать эту функцию таким образом:

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);
}
...