如何将 4 个字节转换为 Swift 浮点数?

2024-05-13

我正在用 Swift 编写一个 MsgPack 解析器作为学习该语言的一种方式。感觉不太适合这项任务,但我一直在进步。现在我遇到了一个块,我似乎无法说服它将 4 个字节转换为浮点数。

var bytes:Array<UInt8> = [0x9A, 0x99, 0x99, 0x41] //19.20000

var f:Float = 0

memccpy(&f, &bytes, 4, 4)

print(f)

在操场上我得到:

致命错误:无法解开Optional.None Playground 执行失败:错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。

有什么想法下一步要尝试什么吗?


放下& on &bytes. bytes是一个数组。

    var bytes:Array<UInt8> = [0x9A, 0x99, 0x99, 0x41] //19.20000

    var f:Float = 0.0

    memccpy(&f, bytes, 4, 4) // as per OP. memcpy(&f, bytes, 4) preferred

    println ("f=\(f)")// f=19.2000007629395

更新 Swift 3

memccpy似乎在 Swift 3 中不起作用。正如评论者所说,使用memcpy :

import Foundation
var bytes:Array<UInt8> = [0x9A, 0x99, 0x99, 0x41] //19.20000

var f:Float = 0.0

/* Not in Swift 3
 memccpy(&f, bytes, 4, 4) // as per OP.

 print("f=\(f)")// f=19.2
 */

memcpy(&f, bytes, 4) /

print("f=\(f)")// f=19.2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 4 个字节转换为 Swift 浮点数? 的相关文章

随机推荐