Как быстро конвертировать Int16 в два байта UInt8

У меня есть некоторые двоичные данные, которые кодируют двухбайтовое значение в виде целого числа со знаком.

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

13
задан pkamb 21 August 2019 в 06:50
поделиться