我試圖讀取從網絡接收到的位序列(以預定義的格式),並想知道我們是否需要照顧endianees。從無符號字符中讀取N位時是否會出現endianess問題
例如,預先定義的格式表示,收到了來自最顯著位開始的數據是這樣的
|R|| 11 bits data||20 bits data||16 bits data| where R is reserved and ignored.
我的問題是,同時提取我要照顧字節序的或者我可以做
u16 first_11_bits = *(u16 *)data & 0x7FF0) >>4
u32 20_bits_data = *(u32 *)data & 0x000FFFFF)
你需要使用'&'來掩蔽,而不是'&&'。 – user694733
那些&&可能不會做你認爲他們會的。它們是「邏輯」和「運算符」,而不是按位和(「&」)。 –
我會說是的。如果你從一臺小型機器發送一個數字,然後在大型機器上接收數據,反之亦然。通常發送的數據應該是大端格式 –