2013-01-08 146 views
0

如果我有一個十六進制值53,那麼在Java中查看第6位和第7位的值是什麼最好的方法是什麼?位1將被視爲最低有效位(或一個字節內最右邊的位)。將十六進制轉換爲十進制值

目標是取bit6和bit7並將它們轉換爲其組合的十進制形式。

+0

可以屏蔽每個位都相應的2位數的冪。例如,要知道第四位的值,可以使用按位和8位。x&8 => x&(2^3) –

+2

通常的位尋址是最低有效位是位0,而不是位1。 –

+0

雖然不是您的問題的直接答案,但您可能也對[Integer.toBinaryString(int)]感興趣(http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html #toBinaryString(int)) –

回答

1

這很簡單:

byte b = 53; 
boolean bit6 = ((b >> 5) & 1) == 1; 
boolean bit7 = ((b >> 6) & 1) == 1; 

或者:

byte b = 53; 
int bit6and7 = b & (0x3 << 5); // Will give: 0 bit7 bit6 0 0 0 0 0 

或者:

byte b = 53; 
int bit6and7 = (b >> 5) & 0x3; // Will give: 0 0 0 0 0 0 bit7 bit6 
2

最簡單的辦法,我認爲是:

int bits7And8 = (byteValue >>> 5) & 3; 

這會給你6,7位中最低的兩個位的位置。如果你需要他們爲String值:

String bits7And8String = Integer.toString(bits7And8); 
+0

@Louis Wasserman - 得到位7和8或6和7?我需要找到6和7 ... – c12

+1

@ c12 - 對不起 - 由於您的非常規索引的最低有效位是1而不是0,因此我被關閉了一個。 –

+0

byte byteValue = 53;是你想要爲你的例子?假設十六進制爲53. – c12