2

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

一切都很好,除了我找不到如何使用write(_:maxLength:)NSOutputStream 的函数编写我的 Int ..

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

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

有人知道如何为 Int 做这件事吗?

谢谢你的帮助 !

4

2 回答 2

6

你应该能够做这样的事情:

var int = 100

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

编辑:要阅读您的Int内容,您可以这样做

func getInt(ptr: UnsafePointer<UInt8>) -> Int {
    return UnsafePointer(ptr).memory
}
于 2015-09-12T14:31:44.137 回答
0

斯威夫特 4:

var int = 100

let result = withUnsafePointer(to: & int) {
            let unsafePointer8 = $0.withMemoryRebound(to: UInt8.self, capacity: 1, {$0})
            outputStream?.write(unsafePointer8, maxLength: MemoryLayout<Int64>.size)
        }
于 2017-08-11T19:32:18.743 回答