栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何快速将字节转换为浮点值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何快速将字节转换为浮点值?

<44fa0000>
是二进制浮点数的 big-endian
内存表示形式
2000.0
。要从数据中获取数字,您必须
UInt32
先将其读入,从big-endian转换为主机字节序,然后将结果转换为a
Float


Swift 2

func floatValueFromData(data: NSData) -> Float {    return unsafeBitCast(UInt32(bigEndian: UnsafePointer(data.bytes).memory), Float.self)}

例:

let bytes: [UInt8] =  [0x44, 0xFA, 0x00, 0x00]let data = NSData(bytes: bytes, length: 4)print(data) // <44fa0000>let f = floatValueFromData(data)print(f) // 2000.0

Swift 3中, 您可以使用

Data
代替
NSData
,而
unsafeBitCast

可以用
Float(bitPattern:)
初始化程序代替:

func floatValue(data: Data) -> Float {    return Float(bitPattern: UInt32(bigEndian: data.withUnsafeBytes { $0.pointee } ))}

Swift 5中
,使用(untyped)调用闭包的

withUnsafeBytes()
方法,您可以从原始内存中获取值:
Data``UnsafeRawBufferPointer``load()

func floatValue(data: Data) -> Float {    return Float(bitPattern: UInt32(bigEndian: data.withUnsafeBytes { $0.load(as: UInt32.self) }))}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406543.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号