2011-01-28 5 views
11

intの変数にはJavaの変数(0から64000の範囲)があります。この整数にバイトを変換するには? int(範囲は問題ありません)からちょうど2つ下のバイトが必要です。これをどのように抽出するのですか?int変数から下位2バイトを取得

答えて

22

あなたは0xFFとの論理積をとることにより、整数から最下位バイトを取得することができます。

byte lowByte = (byte)(value & 0xFF); 

0xFFはどこにでも最初のバイト上記のゼロのビットを持っているので、これは動作します。

2番目に低いバイトを取得するには、あなたは8番スポットのすべてのビットをシフトダウンした後、このトリックを繰り返すことができます:

byte penultimateByte = (byte)((value >> 8) & 0xFF); 
+2

+1でそれをしようとします;-) –

3

をあなたは下を得るために行うAND演算する必要はありませんバイトだけをバイトにキャストし、バイト変数の下位バイトを取得します。次の両方の

試みは、それはトリックではありませんが、それは「算術シフト」と呼ばれていますあなたに

short value = 257; 
System.out.println(value); 
byte low = (byte) value; 
System.out.println("low: " + low); 
byte high = (byte)(value >> 8); 
System.out.println("high: " + high); 

value = 257; 
System.out.println(value); 
low = (byte) (value & 0xFF); 
System.out.println("low: " + low); 
high = (byte) ((value >> 8) & 0xFF); 
System.out.println("high: " + high); 

を同じ結果を与えるかIdeone.com