1
我對網絡編程消息幀短的問題:網絡編程/消息成幀
你經常看到定義MAGIC標誌和相應的位掩碼來檢索它的實現。
頭部可能包含其他消息相關信息,用邏輯或翻轉這些位。
各種實現使用(標頭& MASK)== MAGIC檢查魔幻標誌。
分離這些擔憂有什麼好處?
你也可以這樣做:(標題& MAGIC)== MAGIC。
我對網絡編程消息幀短的問題:網絡編程/消息成幀
你經常看到定義MAGIC標誌和相應的位掩碼來檢索它的實現。
頭部可能包含其他消息相關信息,用邏輯或翻轉這些位。
各種實現使用(標頭& MASK)== MAGIC檢查魔幻標誌。
分離這些擔憂有什麼好處?
你也可以這樣做:(標題& MAGIC)== MAGIC。
簡單的例子:
MASK = 0x000F
MAGIC = 0x0001
header = 0x0005
然後(header & MASK) == MAGIC
檢查了在MASK設置(這裏的低4位)中的所有位具有相同值如MAGIC的相應位。這是不是真的對於 示例頭。
另一方面,(header & MAGIC) == MAGIC
僅檢查在MAGIC中設置的所有位是否也設置在標題中,在此示例中爲真。
在你的例子中,header = 0xFFFF
會通過測試(header & MAGIC) == MAGIC
, 但不是測試(header & MASK) == MAGIC
。
當然,如果MASK == MAGIC沒有區別。
非常有意義。 –