重複の可能性:
Java整数からバイト配列
以下のオリジナルにまだ関連する別の質問があります:
整数として保存された4文字(2バイト)を占める16進数がある場合。例:
int value = 0xFFFF;
これはJavaで、2バイトが完全に空の4バイトの16進数になります。
データのある2バイトだけを取得するにはどうすればよいですか?
ヘルプは大歓迎です!:)
私の2番目の質問への回答:
md_5によって以下に投稿されたより良い答え。
したがって、データを含むSINGLEバイトを取得するには、次のようにするだけです。byte single =(byte)i&0xFF 65535(0xFFFF)までの大きな数値がある場合は、次のように実行できます。
byte b1 = (byte) ((i >> 8) & 0xFF); byte b2 = (byte) i & 0xFF
整数範囲にさらに大きな数値がある場合は、b1 = i >> 24、b2 = i >> 16などを実行します。シフトから8を引くと、バイトのサイズになります。
別の方法では、元の質問に対する回答を使用します。
int hex = 0xF15E;
byte[] bytes = ByteBuffer.allocate(4).putInt(hex).array();
for(int i = 0; i < 4; i++) {
System.out.format("0x%X ", bytes[i]);
}
出力:
0x0 0x0 0xF1 0x5E
したがって、重要なバイトを取得します。
byte[] importantBytes = {bytes[2], bytes[3]};
元の質問:
この質問は、整数をbyte []に変換できるため、廃止されている可能性がありますが、次のようになります。
整数を先行ゼロを持つ16進数に変換するにはどうすればよいですか?
したがって、整数4096の場合、16進数では00001000になります。
全体的な目的は、このフォーマットされた16進文字列をbyte []に変換することでした(これは保存されます)が、上記の方法でこれを実行できると思います。
しかし、それでも...この整数をフォーマットされた16進文字列に変換するにはどうすればよいですか?これも実用的ですか?
好みの言語はJavaで、私はInteger.toHexString()を見ました。
私が最初に必要としていたもののための実用的な解決策:
int value = 2147483647;
byte[] bytes = ByteBuffer.allocate(4).putInt(value).array();
for(int i = 0; i < 4; i++)
System.out.format("0x%X ", bytes[i]);