Подтвердить что ты не робот

Преобразование строки в данные в swift 3.0

Я пытаюсь преобразовать строку в тип данных. Я думал, что это все, что мне нужно, но если я попытаюсь распечатать его, он просто печатает "12 байт"

let tString = "Hello World!"
if let newData = tString.data(using: String.Encoding.utf8){
    print(newData)
    self.peripheral?.writeValue(newData, for: positionCharacteristic, type: CBCharacteristicWriteType.withResponse)
}

Что я делаю неправильно?

4b9b3361

Ответ 1

Ты не делаешь ничего плохого. Это то, как Data в настоящее время выполняет отладочную распечатку. Со временем это изменилось. Он временами печатался больше как NSData. В зависимости от формата отладочной печати довольно хрупкий, я считаю, что лучше просто владеть им более непосредственно. Я нашел следующее довольно полезное:

extension Data {
    func hex(separator:String = "") -> String {
        return (self.map { String(format: "%02X", $0) }).joined(separator: separator)
    }
}

Это позволяет мне заменить ваш простой print(newData) чем-то вроде

print(newData.hex())

или

print(newData.hex(separator:"."))

если мои глаза нуждаются в помощи, анализируя байты

В стороне, я делаю довольно много материала BLE сам, и разработал ряд других полезных расширений данных для материала BLE.