Bri*_*ian 10 swift swift-playground
我正在Swift中编写一个MsgPack解析器来学习该语言.它感觉不太适合这项任务,但我一直在取得进展.现在我遇到了一个块,我似乎无法说服它将4个字节转换为浮点数.
var bytes:Array<UInt8> = [0x9A, 0x99, 0x99, 0x41] //19.20000
var f:Float = 0
memccpy(&f, &bytes, 4, 4)
print(f)
Run Code Online (Sandbox Code Playgroud)
我在操场上得到:
致命错误:无法解包Optional.None Playground执行失败:错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0).
任何想法接下来要尝试什么?
Gri*_*mxn 13
掉落&的&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
Run Code Online (Sandbox Code Playgroud)
更新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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4352 次 |
| 最近记录: |