我在php中有这个函数,可以在PHP中将十六进制转换为32浮点数。你是如何在Javascript中做到的?
public static function hexTo32Float($val)
{
$packed=pack("H*",$val);
$reversedpac=strrev($packed);
$unpack=unpack( "f",$reversedpac);
return array_shift($unpack);
}
答案 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
是无符号浮点数的版本(虽然在文档中找不到)。