我試圖將兩個NSData
對象連接成一個NSMutableData
,而不是讓他們回來。現在我試圖這樣做:Swift。如何將字節從NSData寫入另一個NSData?
- 獲取第一個對象的長度。
- 按以下順序寫入
NSMutableData
:第一個對象長度,第一個對象,第二個對象。
代碼如下所示:
let firstString = "first_string";
let secondString = "secondSting";
let firstData = firstString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let secondData = secondString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let mutableData = NSMutableData()
var length = firstData.length
mutableData.appendBytes(&length, length: sizeof(Int))
mutableData.appendData(firstData)
mutableData.appendData(secondData)
然後我想DATAS回來。所以我想讀取第一個數據長度,然後得到兩個數據。
var length = 0
mutableData.getBytes(&length, length: sizeof(Int))
但是,當我試圖讓數據我得到崩潰,而不是:
var data = NSData()
mutableData.getBytes(&data, range: NSMakeRange(sizeof(Int), length))
也許有人知道哪裏是我的問題還是如何讓DATAS?
除非我讀錯了,否則問題是如何連接兩批數據,並在此之前以第一批數據的長度開始數據。這似乎沒有回答,它需要已經形成的數據並返回基於sizeof(Int)和長度的子範圍。我不明白這個範圍與問題的問題有什麼關係。 – sketchyTech
@GoodbyeStackOverflow:從問題:*「然後我想獲取數據...但是當我試圖獲取數據時,我正在崩潰,而不是」* - 據我瞭解的問題,這是關於提取數據部分再次。我衷心希望如果OP沒有解決問題,OP不會接受答案。 –
是的,你說得對。我誤解了這個問題。抱歉。它把我和UInt8和Int混合在一起,但我猜它可行(防止在32位和64位系統之間移動?)。 – sketchyTech