簡體   English   中英

獲取UnsafePointer <UInt8> 將Int寫入流中

[英]Get UnsafePointer<UInt8> to Int to write an encoded Int to a stream

如何獲得指向數字變量的指針? 例如,轉換將獲得一個UnsafePointer<UInt8> ,它指向包含Swift Int的存儲。 我需要將Int寫入流中。

我的例子:

public static func writeToOutputStream(text: String!, outputStream:NSOutputStream!){
    let encodedDataArray = [UInt8](text.utf8)
    //send length of the data so the server knows when the message ends.
    outputStream.write(encodedDataArray.count, maxLength: 4)
    outputStream.write(encodedDataArray, maxLength: encodedDataArray.count)
}

如果我也想發送數據長度,我需要encodedDataArray.countUnsafePointer<UInt8>

withUnsafePointer使用,如下所示:

let outputStream = NSOutputStream(toMemory: ())
outputStream.open()

var count: Int = 0x01020304 // = encodedDataArray.count in your program
withUnsafePointer(&count) { (pointer: UnsafePointer<Int>) -> Void in
    outputStream.write(UnsafePointer<UInt8>(pointer), maxLength: 4)
}

outputStream.propertyForKey(NSStreamDataWrittenToMemoryStreamKey)

結果:

<04030201>

請注意,它將以低字節序寫入字節(因為當前運行Swift的所有平台都是低字節序)。 如果要使用big-endian編寫,請使用encodedDataArray.count.bigEndian

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM