簡體   English   中英

如何將兩位加到十六進制中

[英]how to add two bits into a hex

我有兩個字節,並且我設置了不同的位以獲取不同的組合。 例如,字節1的第7位和字節2的第1位,第2位使組合設備就緒。 現在,我創建了面具

#define C1_device_ready   (0x80 | 0x100 | 0x200)

然后,我讀取了數據並嘗試進行比較。 我可以做1個字節(data [0]&mask == mask)。 但是,如何為有兩個字節的data_0和data [1]的C1_device_ready掩碼計算它。 是否容易做到?還是只應在單個字節中進行屏蔽? :: added :: data是未簽名的char數據[2]

如果data是一個unsigned char數組,則可以測試

if ((data[0] & mask) == (mask & 0xFF) && (data[1] & mask) == ((mask >> 8) & 0xFF))

或合並兩個data[i]並檢查

if (((data[0] | (data[1] << 8)) & mask) == mask)

采用

if (((data[0] | (data[1] << 8)) & mask) == mask) {
    // do something
}
((data[0] | (data[1]<<8)) & mask) == mask

應該管用。 可能需要將事物強制轉換為unsigned int

嘗試:

if ((*(short *)data) & C1_device_ready)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM