Мне нужна помощь в интерпретации формулы. Это из документации маяка, с которым я экспериментирую. Я написал это в Swift, но я не могу заставить его работать. Независимо от значения переменной температуры не заканчивается как 0.Побитовые операции в Swift, значения считывания из данных маякового радиосигнала
Из документации:
* Основной ID транслирует наиболее значимые 8 бит влажности и наиболее значимых 8 бит температуры, и минор ID передает следующие 2 бита температуры (всего 10 самых значащих бит) и 14 младших значащих битов младшего идентификатора как действительно малое, настроенное пользователем. Таким образом, влажность составляет всего 8 бит, а температура составляет всего 10 бит.
Пример:
Так влажность:
uint16_t Humidity = Major(As Hex value) & 0xFF00;
Температура:
uint16_t temperature = ((Major(As Hex value) & 0x00FF) << 8) & ((Minor(As Hex value) &
0xC000) >> 8);
Действительно Minor:
uint16_t Real Minor = Minor(As Hex value) & 0x03FF;
Это то, что я придумал и это кажется правильным, но t он в результате последнего побитового И возвращает 0 *
let majorAnd = UInt16(beacon.major) & 0x00FF
let majorShift = majorAnd << 8
let minorAnd = UInt16(beacon.minor) & 0xC000
let minorShift = minorAnd >> 8
let temperatureResult = majorShift & minorShift
'' 'было бы более уместным. Это просто случайность, что '+' имеет тот же результат. – Alexander
@ Александр, согласился, что '' 'более уместно. Ред. – vacawama