對於這裏的專家來說,這可能是非常基本的或者甚至是愚蠢的,但是我想讓我的頭腦解決這個問題。大部分的時間我一般寫這樣的十六進制值在C:解釋十六進制值?
unsigned int a = 0xFFFF1232;
比方說,我想提取的第一個和最後一個16位的話,我可以簡單地做:
unsigned short high = a >> 16; // Gives me 0xFFFF
unsigned short low = a & 0x0000FFFF; // Gives me 0x000which is then stored as 0x1232
在一些代碼我讀我所遇到如下:
unsigned short high = a >> 16;
unsigned short low = a & 0xFFFF;
我有兩個問題
- 當您使用掩碼爲
AND
32位值時,爲什麼人們會寫0xFFFF
而不是0x0000FFFF
?它保持緊湊嗎? - 編寫
0x0000FFFF
作爲0xFFFF
總是安全嗎?它在任何情況下都有不同的解釋嗎?
我認爲哪一個「更具可讀性」是有爭議的,可以解釋,但是+1。 – 2010-12-03 22:38:28
我寧願說「不太可讀」(例如:今天是00000002010/00000000012/00000000004)。 – ruslik 2010-12-03 22:38:54
@xscott:編寫`char c = 0x000000000000000000001'是完全合法的;`只有當實際值(而不是它的表示)超過目標的大小時纔會收到警告, – ruslik 2010-12-03 22:48:47