Невозможно преобразовать значение типа «UnsafeBufferPointer» в ожидаемый тип аргумента «rawPointer» - PullRequest
0 голосов
/ 24 февраля 2020
   extension NSData {

    func hexString() -> String {
        return UnsafeBufferPointer<UInt8>(start: UnsafePointer<UInt8>(bytes), count: length)
            .reduce("") { $0 + String(format: "%02x", $1) }
    }

}

Поскольку Xcode 11 получает адрес Ma c из шестнадцатеричного гексагона в swift, я просто зацикливался. Мне сказали, что это хороший способ сделать это, но все, что я получаю, это ошибки.

Я получаю адрес MA C, включенный в строку, с устройства Ble, подключенного к iOS, конечно, в 11, 12 и ниже, я получаю адрес Ma c в нужном мне формате.

Я получаю адрес Ma c, подобный этому, с устройства Ble. <hexvalue> У меня есть код, который удаляет <и>, который работает, но с тех пор, как Apple сделала обновления, я знаю, взять это в качестве примера: "{length = 6, bytes = 0x686578636172}\n

Как мне просто удалить лишнее дерьмо сейчас? ? все, что мне нужно, это гекс. Я могу преобразовать это в Ma c, вставив:, это легко. debugDescription не работает. .description не работает, и я понимаю, что он никогда не предназначался для такого использования, но я использую кодовую базу, которая использует его во многих файлах.

1 Ответ

0 голосов
/ 25 февраля 2020

попробуйте

import Foundation
extension Data {
    func hexString() -> String {
        self.compactMap {
            String(format: "%02x", $0)
        }.joined()
    }
}

var data = Data("Hello World".utf8)
data.append(contentsOf: [1,2,3,4,5])
print(data.hexString())

отпечатки

48656c6c6f20576f726c640102030405

или даже лучше

import Foundation
extension Data {
    var hexString: String {
        self.compactMap {
            String(format: "%02x", $0)
        }.joined()
    }
}

var data = Data("Hello World".utf8)
data.append(contentsOf: [1,2,3,4,5])
print(data.hexString)
...