1

現在、8ビットの2進数文字列があり、左にシフトして10ビットの2進数を取得したいと考えています。(すなわち0111001010)

 String[] channels = datArray.get(n).split(" ");
 byte[] RI = channels[m+1].getBytes();
 String s = (Integer.toBinaryString(Integer.parseInt(channels[m+1])));

値の例:

RIは次の値に等しい:[B @ 4223b758

Sは次の値に等しい:1100101

どんな助けでも大歓迎です。

4

2 に答える 2

2

次のものを使用できます。

BigInteger i = new BigInteger("00000011" + "00", 2);
int x = i.intValue(); 

ここで、「00000011」は8ビット数の文字列表現です。「00」は左シフトをシミュレートします。

于 2013-03-13T18:00:38.007 に答える
2

これはうまくいきませんか:

String input = "1100101";
int value = Integer.parseInt(input, 2) << 1;
System.out.println(Integer.toBinaryString(value));

戻り値:

11001010

バイナリ文字列を解析し、左 (1 桁) にシフトします。

あなたのアプローチに欠けているように見える2つのことは、2進数を表す String を解析するときにa を指定する機能と、radix左シフト演算子です。

先頭のゼロが必要な場合は、これを達成する方法が組み込まれていないことに驚きました。現在の知恵では、これが最適な方法です (このディスカッションから取得) 。

System.out.println(String.format("%10s", Integer.toBinaryString(value)).replace(' ', '0'));

与えられた値の例では、これが返されます:

0011001010
于 2013-03-13T18:13:10.053 に答える