У меня есть некоторые двоичные данные, которые кодируют двухбайтовое значение в виде целого числа со знаком.
bytes[1] = 255 // 0xFF
bytes[2] = 251 // 0xF1
Декодирование
Это довольно просто - я могу извлечь значение Int16
из этих байтов с помощью:
Int16(bytes[1]) << 8 | Int16(bytes[2])
Кодирование
Здесь я сталкиваюсь с проблемами. Большая часть моей спецификации данных требует UInt
, и это легко, но у меня возникают проблемы с извлечением двух байтов, составляющих Int16
let nv : Int16 = -15
UInt8(nv >> 8) // fail
UInt8(nv) // fail
Вопрос
Как мне извлечь два байта, которые составляют значение Int16