Как я могу преобразовать 2 значения из массива ByteArray<UInt8> в 16-битное целое число UInt16 в Swift 4?
Используя Xcode 9.4.1 и Swift 4.1
У меня есть функция, которая читает массив как входной параметр (см. MessageData в моем коде). Теперь я хочу назначить 2 конкретных байта (то есть 2 значения ByteArray) одному UInt16. Итак, я увидел подход с 0xff
в большем количестве вопросов, но это не работает для меня. 16-разрядное целое число, которое я хочу преобразовать, равно 28281.
var ctValue : UInt16 = CFSwapInt16HostToBig(UInt16(commandType!.rawValue))
let ctValueData: UnsafeMutablePointer<UInt16> = UnsafeMutablePointer<UInt16>(&ctValue)
ctValueData[1] = UInt16(CChar(((messageData[++(idx)]) >> 8) & 0xff))
ctValueData[0] = UInt16(CChar(((messageData[++(idx)]) >> 0) & 0xff))
commandType = NWPFunction.forCommandId(commandId:Int(ctValue))
- commandType - это Enum, который имеет несколько случаев, содержащих HEX-значения
- messageData - это ByteArray, параметр этой функции
- NWPFunction - это класс, содержащий функцию "forCommandId", которая будет возвращать определенное значение для данного 16-разрядного целого числа "ctValue"
- ++() - это префиксная функция, которую я добавил, поэтому ее компиляция