我正在开发一个微控制器设备将数据发送到Web服务器的项目。
我创建了一个网页,用户可以使用该表单向设备发送命令,并可以在同一页面上查看设备的响应。
问题是设备只能理解十六进制命令。所以我需要从页面发送十六进制命令,如
0x800xe80x10
现在我可以从网页上的表单中读取用户提交的命令,但我无法将其转换为十六进制。我读过有关Buffer但它将每个ASCII字符更改为十六进制。所以 0x80 会产生类似
的内容30 78 38 30
虽然我想要是
80
谢谢
答案 0 :(得分:2)
缓冲区可以传递十六进制数据,它们只是在每个字节之前不期望0x
,所以你可以这样做:
var userHex = '0x800xe80x10';
var buf = new Buffer(userHex.replace(/0x/g, ''), 'hex');
// buf == <Buffer 80 e8 10>
答案 1 :(得分:0)
function hexStr2Buf(hexStr) {
var hexArray = hexStr.split('0x').filter(function(e) {
return e.length === 2;
});
var numArray = hexArray.map(function (e) {
return parseInt(e, 16);
});
return Buffer(numArray);
}
var buff = hexStr2Buf('0x800xe80x10');
console.log(buff);
输出:
<Buffer 80 e8 10>
答案 2 :(得分:-1)
如果您只想将该命令发送到服务器端,请使用:
var buf = new Buffer([128, 232, 32]);
console.log(buf);
其中128,232,32是0x800xe80x10。任何其他方法都会引入冗余