【发布时间】:2015-03-15 08:26:50
【问题描述】:
我正在尝试从 Swift according to this answer 中的二进制流重构浮点数。据我所知,字节是正确的,但结果浮点数不正确。
func didReceive(data: NSData!) {
var x:Float = 0
var bytes:[UInt8] = [UInt8](count: 4, repeatedValue: 0)
data.getBytes(&bytes, range: NSMakeRange(0, 4))
memcpy(&x, bytes, 4)
NSLog("x:%f bytes:[%d, %d, %d, %d]", x, bytes[0], bytes[1], bytes[2], bytes[3]);
}
这个函数打印出以下内容:
x:0.000000 bytes:[25, 0, 0, 0]
当我在调试器中检查 x 时,它会将值报告为:
0.0000000000000000000000000000000000000000000350324616
但是,字节[25,0,0,0] 应该是十六进制的0x19000000,我认为是should translate to about 6.617。
我的错误在哪里。 Swift 浮点数不是 IEEE754 32 位浮点数吗?
【问题讨论】:
-
这看起来有点像字节顺序问题,但我没有使用 Swift 的经验,无法真正诊断问题。