gpt4 book ai didi

arrays - 在 Swift 5 中将字节数组转换为 Int64

转载 作者:行者123 更新时间:2023-11-28 09:47:43 25 4
gpt4 key购买 nike

我正在处理各种 UInt8(小端)数组,需要将它们转换为 Int64。 在 Swift 4 中我使用了

let array: [UInt8] = [13,164,167,80,4,0]
let raw = Int64(littleEndian: Data(array).withUnsafeBytes { $0.pointee })
print(raw) //18533032973

效果很好。但是在 Swift 5 中,这种方式已被弃用,所以我切换到

let array: [UInt8] = [13,164,167,80,4,0]
let raw = array.withUnsafeBytes { $0.load(as: Int64.self) }
print(raw)

给出错误信息:

Fatal error: UnsafeRawBufferPointer.load out of bounds

在 Swift 5 中有没有一种方法可以转换它,而无需在转换工作之前用额外的 0 填充数组?

谢谢!

最佳答案

或者,您可以按照评论中的建议,通过重复移动和添加来计算数字:

let array: [UInt8] = [13, 164, 167, 80, 4, 0]
let raw = array.reversed().reduce(0) { $0 << 8 + UInt64($1) }
print(raw) // 18533032973

关于arrays - 在 Swift 5 中将字节数组转换为 Int64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com