gpt4 book ai didi

Swift 将字符串转换为数据缓冲区

转载 作者:行者123 更新时间:2023-11-28 07:33:28 24 4
gpt4 key购买 nike

我有一个到热敏打印机的套接字连接,我读取 txt 文件的内容并写入套接字。我的问题是该文件包含十六进制值的混合,这些值是 ESC POS 命令。 IE1x product 0x0A 0x0A(0x0A 代表特定的 ESC POS 命令)。

我想在 Swift 中将文本文件转换为 Node JS 样式的 Buffer 数据类型。我试过将文件转换为数据类型,但没有成功。

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)

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

最佳答案

将字符串转换为字节将执行以下步骤:

  1. 用子串", "拆分字符串
  2. 删除 0x 前缀
  3. 将十六进制表示转换为 UInt8
  4. UInt8 数组转换为 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)

关于Swift 将字符串转换为数据缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com