2017-09-03 27 views
1

我是很新的雨燕,我有一些問題,看了一些資料出來的字節數組從SwiftSocket斯威夫特讀出值的字節數組的3

收到

的XCode說:「數據[字節] 13個值 「

[68,65,84,65,44,55,0,0,0,146,192,236,66]

的響應應該類似 」 DATA, 「(68,65,84,65,44),然後是整數55(55,0,0,0),然後是浮點數(146,192,236,66)

如何從Swift3中的數組中讀取這些值?

 let (data, _, _) = client.recv(13)    
     dump(data)    
     var subAr = data?[9...12] 
     dump(subAr) 

這顯示了我的數組,但我似乎無法讀取值。

 let float2 = subAr.withUnsafeBytes { $0.pointee } as Float 

給我出現以下錯誤:輸入'ArraySlice?'的值。沒有會員'withUnsafeBytes'

任何幫助表示讚賞。

回答

0

.withUnsafeBytes { $0.pointee } as SomeType是一個成語,與Data效果很好。

試試這個:

//sample data... 
var data: [UInt8]? = [68, 65, 84, 65, 44, 55, 0, 0, 0, 146, 192, 236, 66] 

let int32Data = Data(data![5..<9]) 
let int32Value: Int32 = int32Data.withUnsafeBytes{$0.pointee} 
print(int32Value) //->55 
let floatData = Data(data![9..<13]) 
let floatValue: Float = floatData.withUnsafeBytes{$0.pointee} 
print(floatValue) //->118.37 

假設數據包含在本地字節順序多字節值(小端的所有SWIFT支持的平臺,現在)。這對於便攜性來說可能不是一個好的假設。

+0

謝謝!這就是訣竅! –