3
我需要一些幫助來解釋公式。這來自我正在試驗的燈塔的文檔。我用Swift編寫了它,但是我無法實現它的工作。不管值的溫度可變最終成爲0。Swift中的按位運算,從信標數據讀取值
從文檔:
*主要ID廣播溼度和溫度的最顯著8位的最高顯著8位,和 次要ID廣播接下來的2位溫度(總共10個最高有效位)和次要ID的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);
真正輔修:
uint16_t Real Minor = Minor(As Hex value) & 0x03FF;
這是我想出了和這似乎是正確的,但噸他從過去的按位結果,並返回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
@Alexander同意'''更合適。編輯。 – vacawama