Javaで等価なそれらのアルファバイナリ1および0の整数の配列(または文字列)に変換

mheavers:

私は、整数の1と0の配列を持っている(多分に変換取得する必要がありますbyteタイプ?)。私はこの6桁の文字列の同等のバイナリを取得するには、[1] [バイナリー発電へのオンラインASCII]を使用しています:

abcdef等しくなければならない011000010110001001100011011001000110010101100110バイナリ。

私の配列は次のように設定されているint[] curCheckArr = new int[48];と私の文字列は、基本的に使用しているStringBuilder文字列と同じint型を構築するために、そして呼び出しtoString()-私は、文字列や配列などのコードへのアクセス権を持っているので。

私は、を含むが、ブラウザをクラッシュすべてが、いくつかの異なる方法を、試してみました:

StringBuilder curCheckAlphaSB = new StringBuilder(); // Some place to store the chars

Arrays.stream( // Create a Stream
    curCheckString.split("(?<=\\G.{8})") // Splits the input string into 8-char-sections (Since a char has 8 bits = 1 byte)
).forEach(s -> // Go through each 8-char-section...
curCheckAlphaSB.append((char) Integer.parseInt(s, 2)) // ...and turn it into an int and then to a char
);

String curAlpha = curCheckAlphaSB.toString();

そして

String curAlpha = "";

for (int b = 0; b < curCheckString.length()/8; b++) {

    int a = Integer.parseInt(curAlpha.substring(8*b,(b+1)*8),2);
    curAlpha += (char)(a);
}

どうすれば最も効率的に6桁のアルファ文字列にこれらの48の1と0を変換することができますか?

チャールズDowbecki:

各文字が正確に1で表されると仮定すると、byteあなたが入力を反復することができますInteger.parseInt()(ので、byte入力の値が潜在的に符号なしです):

String input = "011000010110001001100011011001000110010101100110";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i += 8) {
    int c = Integer.parseInt(input.substring(i, i + 8), 2);
    sb.append((char) c);
}
System.out.println(sb); // abcdef

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=234510&siteId=1
おすすめ