php

[php]將HEX 轉成32bit的float (IEEE-754規範)

將十六進製字符串轉換為 32 位 IEEE 754 浮點數。這個函數比下面的十六進製到 32 位函數快 2 倍。此函數僅更改數據類型(字符串到 int)一次。此外,此函數是從十六進製到下面的 64 位函數的端口。

<?php
function hexTo32Float($strHex) {
    $v = hexdec($strHex);
    $x = ($v & ((1 << 23) - 1)) + (1 << 23) * ($v >> 31 | 1);
    $exp = ($v >> 23 & 0xFF) - 127;
    return $x * pow(2, $exp - 23);
}
?>

<?php
//example
echo hexTo32Float("435cbd70"); // outputs: 220.73999023438

echo hexTo32Float("457F9000"); // outputs: 4089
echo hexTo32Float("2D7F5");    // outputs: 6.00804264307E-39
echo hexTo32Float("0002D7F5"); // outputs: 6.00804264307E-39
echo hexTo32Float("47D9F95E"); // outputs: 111602.734375
?>
Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)