我有一个插座连接到热敏打印机,我读取txt文件的内容并写入插座。我的问题是这个文件包含混合十六进制值,这些值是ESC POS命令。即
1x product 0x0A 0x0A(0x0A表示特定的ESC POS命令)。
我想在Swift中将文本文件转换为Node JS样式的缓冲区数据类型。我试过把文件转换成数据类型,但没有成功。

let binary = Data([0x1b, 0x64, 0x04, 0x1b, 0x64, 0x04, 0x1d, 0x56,
                   0x00, 0x1b, 0x40])
# Returns 11 Bytes

let content = "0x1b, 0x64, 0x04, 0x1b, 0x64, 0x04, 0x1d, 0x56, 0x00,
               0x1b, 0x40".data(using: .utf8)
# Returns Optional(64 bytes)

如何将内容转换为与二进制文件相同的类型?

最佳答案

将字符串转换为字节将采取以下步骤:
按子字符串“,”拆分字符串
删除0x前缀
将十六进制表示转换为UInt8s
UInt8s的数组转换为Data
代码如下:

let content = "0x1b, 0x64, 0x04, 0x1b, 0x64, 0x04, 0x1d, 0x56, 0x00, 0x1b, 0x40"
let bytes = content.components(separatedBy: ", ") // step 1
    .map { UInt8($0.dropFirst(2) /* step 2*/, radix: 16)! /* step 3 */ }
let data = Data.init(bytes) // step 4

print(data)

08-27 03:04