下面的序列是蓝牙打印机的转义序列,以便打印机知道该序列后面的字符串应该编码成二维码。
[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”也不起作用(它没有被解释为有效的十六进制值)。
感谢您的帮助。
用于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)