将 Int 转换为 UnsafePointer<UInt8>

Convert Int to UnsafePointer<UInt8>

我正在 swift 中为 iOS 设备上的应用程序创建 TCP 客户端。我正在使用 NSOuputStream 在服务器上发送数据。 我们的协议是 JSON 类型,我们必须首先发送 json 的长度(unsigned Int 32 位),然后发送 JSON 内容(作为 UTF8 字符串)。

一切正常,除了我找不到如何使用 NSOutputStream 的 write(_:maxLength:) 函数编写我的 Int。

要将我的 JSON 字符串转换为 UnsafePointer<UInt8>,我使用以下内容

//var json: String
let encodedData = [UInt8](json.utf8)
let result = outputStream?.write(encodedData, maxLength: encodedData.count)

有人知道如何为 Int 做吗?

感谢您的帮助!

您应该可以这样做:

var int = 100

let result = withUnsafePointer(&int) {
    outputStream?.write(UnsafePointer([=10=]), maxLength: sizeof(Int))
}

编辑:要阅读您的Int,您可以

func getInt(ptr: UnsafePointer<UInt8>) -> Int {
    return UnsafePointer(ptr).memory
}

Swift 4:

var int = 100

let result = withUnsafePointer(to: & int) {
            let unsafePointer8 = [=10=].withMemoryRebound(to: UInt8.self, capacity: 1, {[=10=]})
            outputStream?.write(unsafePointer8, maxLength: MemoryLayout<Int64>.size)
        }