将Int转换为UnsafePointer <uint8>

时间:2015-09-12 13:50:42

标签: swift nsstream nsoutputstream

我正在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做这件事吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分: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
}