0

int[] 文字 = {0x69F99}

たとえば、最初の16進数文字列の最初の16進数(6):

String hex = Integer.toHexString(LETTERS[0]);
String binary = Integer.toBinaryString(hex.charAt(0));
System.out.println(binary);

出力:110110

この Integer.toBinaryString(6) を実行すると、出力は 110 になりますが、4 桁のものが欲しいのですが、可能ですか?

4

2 に答える 2

0

ここには文字列はありません。1 つの int を持つ配列だけなので、基本的にこの整数をニブルに変換しようとします。これは次の方法で行うことができます。

int num = 0x12345678;

String bin32 = String.format("%32s", Integer.toBinaryString(num)).replace(" ", "0");
System.out.printf("all 32bits=[%s]\n", bin32);

for(int nibble = 0; nibble < 32; nibble += 4)
{
    System.out.printf("nibble[%d]=[%s]\n", nibble, bin32.subSequence(nibble, nibble+4));
}

与えます:

all 32bits=[00010010001101000101011001111000]
nibble[0]=[0001] ie hex digit 1 as bin
nibble[4]=[0010] ie hex digit 2 as bin
nibble[8]=[0011]
nibble[12]=[0100]
nibble[16]=[0101]
nibble[20]=[0110]
nibble[24]=[0111]
nibble[28]=[1000] ie hex digit 8 as bin
于 2013-11-09T17:19:37.250 に答える
0

お気に入りのライブラリまたはユーティリティ関数を使用して、必要に応じて文字列をパディングします。

グアバで:

String binary = Strings.padStart(Integer.toBinaryString(hex.charAt(0)), 4, '0'));

別のオプションは、単純に文字バッファーを埋めて文字列としてレンダリングすることです。これは、本質的にOpenJDK 実装が行うことです。

public static String intToBin(int num) {
    char[] buf = new char[4];
    buf[0] = num & 0x1;
    buf[1] = num & 0x2;
    buf[2] = num & 0x4;
    buf[3] = num & 0x8;
    return new String(buf);
}
于 2013-11-09T16:27:59.957 に答える