我有一个整数,例如4060
。
我该如何从它获取HEX浮点数(\x34\xC8\x7D\x45
)?
JS没有float
类型,因此我不知道如何进行此转换。
谢谢。
我有一个整数,例如4060
。
我该如何从它获取HEX浮点数(\x34\xC8\x7D\x45
)?
JS没有float
类型,因此我不知道如何进行此转换。
谢谢。
> var b = new Buffer(4);
> b.writeFloatLE(4060, 0)
> b.toString('hex')
'00c07d45'
另一种方法(使用您的输入):
> Buffer('34C87D45', 'hex').readFloatLE(0)
4060.5126953125
更新: new Buffer(size)
已经被弃用,但可以轻松地用Buffer.alloc(size)
替代:
var b = Buffer.alloc(4);
上述答案已经不再有效。 Buffer
已被弃用(请参见https://nodejs.org/api/buffer.html#buffer_new_buffer_size)。
新解决方案:
function numToFloat32Hex(v,le)
{
if(isNaN(v)) return false;
var buf = new ArrayBuffer(4);
var dv = new DataView(buf);
dv.setFloat32(0, v, true);
return ("0000000"+dv.getUint32(0,!(le||false)).toString(16)).slice(-8).toUpperCase();
}
例如:
numToFloat32Hex(4060,true) // returns "00C07D45"
numToFloat32Hex(4060,false) // returns "457DC000"
在Chrome和Firefox中进行了测试
Buffer
没有被弃用。 - robertklep