JavaScript 中动态生成十六进制编码数据

Eli*_*mar 0 javascript

下面的序列是蓝牙打印机的转义序列,以便打印机知道该序列后面的字符串应该编码成二维码。

[27, 90, 0, 2, 7, 23, 0]
Run Code Online (Sandbox Code Playgroud)

该序列应以十六进制字符串格式编码:

let str = ''
str = str + "\x1b" + "\x5a" + "\x00" + "\x02" + "\x07" + "\x17" + "\x00"
Run Code Online (Sandbox Code Playgroud)

其中每个“\xab”值是序列中出现的每个数字的十六进制表示。

“23”(十六进制的“17”)值是应编码到 QR 中的文本的长度,因此,其值是动态的,因此其十六进制值应动态连接到“str”。

使用字符串连接:

 str = ...etc... + "\x07" + "\x" + generateHex("23") (generateHex converts decimal value to Hex) 
Run Code Online (Sandbox Code Playgroud)

导致错误,因为“\x”需要附加一个十六进制数字。

使用双反斜杠转义“\x”也不起作用(它没有被解释为有效的十六进制值)。

感谢您的帮助。

AKX*_*AKX 5

用于String.fromCodePoint()将这些代码点转换为其字符。该String.fromCodePoint函数接受可变数量的参数,因此您实际上可以将数组放入:

> String.fromCodePoint(...[27, 90, 0, 2, 7, 23, 0])
'\x1BZ\x00\x02\x07\x17\x00'
Run Code Online (Sandbox Code Playgroud)