【发布时间】:2013-05-29 10:21:15
【问题描述】:
我正在尝试将 ASCII 字符串转换为字节数组。
问题是我的代码正在从 ASCII 转换为字符串数组而不是字节数组:
var tx = '[86400:?]';
for (a = 0; a < tx.length; a = a + 1) {
hex.push('0x'+tx.charCodeAt(a).toString(16));
}
这会导致:
[ '0x5b','0x38','0x36','0x30','0x30','0x30','0x3a','0x3f','0x5d' ]
但我正在寻找的是:
[0x5b,0x38 ,0x30 ,0x30 ,0x30 ,0x30 ,0x3a ,0x3f,0x5d]
如何转换为字节而不是字节字符串?
此数组正在流式传输到 USB 设备:
device.write([0x5b,0x38 ,0x30 ,0x30 ,0x30 ,0x30 ,0x3a ,0x3f,0x5d])
它必须作为一个数组发送,而不是为数组中的每个值循环发送 device.write()。
【问题讨论】:
-
0x5b实际上并不是0x5b,而只是一个简单的int,其值为91。将它们保存为 int (tx.charCodeAt(a)),一切都会好起来的。 -
数字是数字,它们总是以二进制形式存储。如果您想要十六进制表示,请将其存储为字符串(就像现在一样),或使用
hex.push(tx.charCodeAt(a));,它将存储 ASCII 代码,并在打印时使用.toString(16)转换为十六进制。
标签: javascript arrays node.js