Javaでintを3バイトにするにはどうすればよいですか?
-
06-07-2019 - |
質問
int
を、その int
(ビッグエンディアン)を表す3つの byte
に変換しようとしています。
ビット単位およびビットシフトと関係があると確信しています。しかし、私はそれを実行する方法がわかりません。
例:
int myInt;
// some code
byte b1, b2 , b3; // b1 is most significant, then b2 then b3.
*注、intは4バイトであり、3バイトにはオーバーフロー/アンダーフローの可能性があることに注意してください。
解決
最下位バイトを取得するには:
b3 = myInt & 0xFF;
2番目の最下位バイト:
b2 = (myInt >> 8) & 0xFF;
そして3番目の最下位バイト:
b1 = (myInt >> 16) & 0xFF;
説明:
値を0xFF(バイナリで11111111)とビット単位でAND演算すると、その数値の最下位8ビット(ビット0〜7)が返されます。数値を右に8回シフトすると、ビット8から15がビット位置0から7に入れられるため、0xFFとの論理積は2番目のバイトを返します。同様に、数値を右に16回シフトすると、ビット16〜23がビット位置0〜7に配置されるため、0xFFとのANDをとると3番目のバイトが返されます。
他のヒント
byte b1 = (myint >> 16) & 0xff;
byte b2 = (myint >> 8) & 0xff;
byte b3 = myint & 0xff;
Javaでこのholfdsがどのように動作するかわかりませんが、Java開発者ではありません
intは3バイトに収まりません。ただし、これらの特定のものが知っていると仮定すると:
byte b1 = (myInt & 0xff);
myInt >>= 8;
byte b2 = (myInt & 0xff);
myInt >>= 8;
byte b3 = (myInt & 0xff);
Javaで
int myInt = 1;
byte b1,b2,b3;
b3 = (byte)(myInt & 0xFF);
b2 = (byte)((myInt >> 8) & 0xFF);
b1 = (byte)((myInt >> 16) & 0xFF);
System.out.println(b1+" "+b2+" "+b3);
出力 0 0 1
所属していません StackOverflow