在swift 3.0中将String转换为数据

lus*_*r00 26 swift

我正在尝试将字符串转换为数据类型.我认为这就是我所需要的但是如果我尝试打印它只打印"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)
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Tra*_*ggs 9

你没有做错任何事.这就是Data目前如何进行调试打印输出.它随着时间的推移而改变.它有时打印更像NSData.根据调试打印格式非常脆弱,我认为最好直接拥有它.我发现以下内容非常有用:

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

这允许我print(newData)用类似的东西替换你的简单

print(newData.hex())
Run Code Online (Sandbox Code Playgroud)

要么

print(newData.hex(separator:"."))
Run Code Online (Sandbox Code Playgroud)

如果我的眼睛需要帮助解析字节

除此之外,我自己做了很多BLE的东西,并为BLE的东西编写了许多其他有用的数据扩展