将 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)
}
我正在 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)
}