Быстрое преобразование строки в буфер данных - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть сокетное соединение с термопринтером, который я читаю содержимое txt файла и записываю в сокет.Моя проблема заключается в том, что этот файл содержит смесь шестнадцатеричных значений, которые являются командами ESC POS.т.е. 1x product 0x0A 0x0A (0x0A обозначает конкретную команду ESC POS).

Я хочу преобразовать текстовый файл в тип данных буфера в стиле Node JS в Swift.Я попытался преобразовать файл в тип данных, но безуспешно.

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 Ответ

0 голосов
/ 30 декабря 2018

Преобразование вашей строки в байты потребует следующих шагов:

  1. разделить строку по подстроке ","
  2. удалить префиксы 0x
  3. convertшестнадцатеричные представления в UInt8 s
  4. преобразуют массив из 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)
...