在javascript中将十六进制转换为32浮点数

时间:2014-01-06 11:04:19

标签: javascript php

我在php中有这个函数,可以在PHP中将十六进制转换为32浮点数。你是如何在Javascript中做到的?

public static function hexTo32Float($val)
{
    $packed=pack("H*",$val);
    $reversedpac=strrev($packed);
    $unpack=unpack( "f",$reversedpac);

    return array_shift($unpack);
}

2 个答案:

答案 0 :(得分:2)

使用TypedArray(仅适用于最近的浏览器)怎么样?

var intData = Uint32Array(1);
intData[0] = parseInt("42458c14", 16);
var dataAsFloat = new Float32Array(intData.buffer);
var result = dataAsFloat[0];
// result == 49.38679504394531
编辑(一年后......):似乎结果可能取决于你的CPU是大印度人还是小印度人。使用时要小心。

答案 1 :(得分:0)

完成BS答案后,尝试以下this问题答案中找到的以下内容:
var b = new Buffer(hexNumber, 'hex').readFloatBE(0)
编辑:错误是在这里使用readFloatLE 有关进一步说明:此处的要点是readFloatXX()期望缓冲区内容为两个补码的有符号值。我想readFloatLE是无符号浮点数的版本(虽然在文档中找不到)。