Я обрабатываю различные массивы UInt8 (little-endian) и мне нужно конвертировать их в 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)
, который выдает сообщение об ошибке:
Неустранимая ошибка: UnsafeRawBufferPointer.load выходит за границы
Есть ли способ в Swift 5 преобразовать это, не заполняя массив дополнительными 0, пока преобразование не сработает?
Спасибо!