2017-09-03 28 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

谢谢!这就是诀窍! –