Я пытаюсь преобразовать строку ASCII в массив байтов.Javascript ascii string в hex-массив байтов
Проблема мой код является преобразование из 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)'), и все будет хорошо. – h2ooooooo
Номера - это числа, и они всегда хранятся в двоичном формате. Если вы хотите получить шестнадцатеричное представление, сохраните его как строку (как вы сейчас) или используйте «hex.push (tx.charCodeAt (a));', который будет хранить коды ASCII и использовать '.toString (16) 'для преобразования в hex во время печати. – Osiris
Возможный дубликат [JavaScript Преобразование строковых значений в hex] (http: // stackoverflow.com/questions/1527077/javascript-convertting-string-values-to-hex) –