ios - 从 Swift 3 中的字节数组中读取值

标签 ios arrays iphone swift xcode

我是 Swift 的新手,我在从 SwiftSocket 接收的字节数组中读取一些信息时遇到了一些问题

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),然后是一个 float (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'

感谢任何帮助。

最佳答案

.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 的平台都是小字节序)。对于可移植性,这可能不是一个好的假设。

关于ios - 从 Swift 3 中的字节数组中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022049/

相关文章:

ios - objective-c - IB - 垂直居中 3 多行 UILabels

ios - 在 UIApplicationWillTerminate 上关闭 rootViewController

arrays - OpenCv - 从直方图数组中获取值

iphone - 自定义 NSSortDescriptors

iphone - 如何知道 View 何时显示? - 使用 BurSTLy 进行广告集成

objective-c - 在IOS xcode程序中搜索Char数组中的字符串?

ios - 异步 NSURLConnection 和保持事件状态

php - 将多个数组返回到 Response::json laravel?

ios - 按指定索引对数组进行排序,在保持字母顺序的同时对 bool 值进行优先排序

ios - 在 IOS 应用程序中使用 FFMPEG 的可靠性?