我有一个插座连接到热敏打印机,我读取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
前缀
将十六进制表示转换为UInt8
s
将UInt8
s的数组转换为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)