2013-08-02 63 views
1

我對網絡編程消息幀短的問題:網絡編程/消息成幀

你經常看到定義MAGIC標誌和相應的位掩碼來檢索它的實現。

頭部可能包含其他消息相關信息,用邏輯或翻轉這些位。

各種實現使用(標頭& MASK)== MAGIC檢查魔幻標誌。

分離這些擔憂有什麼好處?

你也可以這樣做:(標題& MAGIC)== MAGIC。

回答

2

簡單的例子:

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沒有區別。

+0

非常有意義。 –