cra*_*aft 3 javascript arrays node.js
我试图将ASCII字符串转换为字节数组.
问题是我的代码是从ASCII转换为字符串数组而不是字节数组:
var tx = '[86400:?]';
for (a = 0; a < tx.length; a = a + 1) {
hex.push('0x'+tx.charCodeAt(a).toString(16));
}
Run Code Online (Sandbox Code Playgroud)
这导致:
[ '0x5b','0x38','0x36','0x30','0x30','0x30','0x3a','0x3f','0x5d' ]
Run Code Online (Sandbox Code Playgroud)
但我要找的是:
[0x5b,0x38 ,0x30 ,0x30 ,0x30 ,0x30 ,0x3a ,0x3f,0x5d]
Run Code Online (Sandbox Code Playgroud)
如何转换为字节而不是字节字符串?
此阵列正在流式传输到USB设备:
device.write([0x5b,0x38 ,0x30 ,0x30 ,0x30 ,0x30 ,0x3a ,0x3f,0x5d])
Run Code Online (Sandbox Code Playgroud)
它必须作为一个数组发送,而不是为数组中的每个值循环发送device.write().
HBP*_*HBP 14
单衬里:
'[86400:?]'.split ('').map (function (c) { return c.charCodeAt (0); })
Run Code Online (Sandbox Code Playgroud)
回报
[91, 56, 54, 52, 48, 48, 58, 63, 93]
Run Code Online (Sandbox Code Playgroud)
当然,这是一个数字数组,而不是严格意义上的"字节数组".你真的是指"字节数组"吗?
将字符串拆分为单个字符,然后将每个字符映射到其数字代码.
根据您添加的相关信息,device.write我发现了这个:
写入设备
使用设备句柄中的写入调用来执行对设备的写入.所有写作都是同步的.
device.write([0x00,0x01,0x01,0x05,0xff,0xff]);
在https://npmjs.org/package/node-hid
假设这是你正在使用的,那么上面的数组将非常好用:
device.write('[86400:?]'.split ('').map (function (c) { return c.charCodeAt (0); }));
Run Code Online (Sandbox Code Playgroud)
正如已经指出的那样,0x符号只是一种符号.无论您指定0x0a或10或012(八进制)的值是一样的.
| 归档时间: |
|
| 查看次数: |
10903 次 |
| 最近记录: |