如何在Javascript中解析ASCII HEX FLOAT以获取从串行设备返回的数据

时间:2016-11-02 14:28:47

标签: javascript serial-port

我从(串行)设备返回一段代码。我有4个字节的信息需要从中获取可用的,人类可读的值。

我尝试了很多来自互联网的代码示例,但我无法控制它。

以下是结果的示例,但没有关于如何在JavaScript中执行此操作的公式:

34 32 33 39 37 30 41 34 Bus voltage-float: A4703942=46.36
// ( so Voltage is 46.36 )

如何从JavaScript中的Hex A4703942获取此内容?

我知道这与浮子,小端或大端有关...是吗?

2 个答案:

答案 0 :(得分:0)

检查以下网址

http://babbage.cs.qc.cuny.edu/IEEE-754.old/32bit.html

在上面的URL中,输入字符串423970A4,这是您的字节字符串的反向(因为那个结尾的东西)并单击compute,您将得到46.36。

此网址页面中的JavaScript可帮助您进行此转换。

答案 1 :(得分:0)

或多或少地回答我自己的问题:

//从返回的Hex中提取可用数据

function roundToTwo(num) {    
return +(Math.round(num + "e+2")  + "e-2");
}


print or whatever (roundToTwo(hex2float("0x"+<yourhexInput>)));[/CODE]

//使它成为一个漂亮的4位数字

function swap32(val) {
return ((val & 0xFF) << 24)
       | ((val & 0xFF00) << 8)
       | ((val >> 8) & 0xFF00)
       | ((val >> 24) & 0xFF);
}

(有时需要翻转字节/十六进制才能成为正确的输入)

例如:

MeshStanardMaterial