无法将类型 'UnsafeBufferPointer' 的值转换为预期的参数类型 'rawPointer'

Cannot convert value of type 'UnsafeBufferPointer' to expected argument type 'rawPointer'

   extension NSData {

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

}

因为 Xcode 11 从 swift 中的十六进制获取 Mac 地址只是让我发疯。有人告诉我这是一个很好的方法,但我得到的只是错误。

我从连接到 iOS 的 Ble 设备中获取了包含在字符串中的 MAC 地址,当然在 11、12 及以下版本中,我获取了格式为 Mac 的地址我需要

我从 Ble 设备上得到了这样的 Mac 地址。 <hexvalue> 我有删除有效的 < 和 > 的代码,但是自从 Apple 进行更新以来,我知道以这个为例:"{length = 6, bytes = 0x686578636172}\n

我现在如何简单地删除多余的废话?我只需要十六进制。我可以通过插入 : 将其转换为 Mac,这很简单。 debugDescription 不起作用。 .description 不起作用,我知道它从来没有打算以这种方式使用,但我陷入了一个代码库中,就像在很多文件中那样使用它。

试试这个

import Foundation
extension Data {
    func hexString() -> String {
        self.compactMap {
            String(format: "%02x", [=10=])
        }.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", [=12=])
        }.joined()
    }
}

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