1

目前我有一个 8 位二进制字符串,我想把它左移并从中得到一个 10 位二进制数。(即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

解析二进制字符串并左移(一位)。

您的方法中似乎缺少的两件事是在解析表示二进制数字的字符串时指定 a的能力,以及radix左移运算符

如果你想要前导零,我很惊讶地发现没有内置的方法来实现这一点,目前的智慧是这是最佳方式(取自这个讨论

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

对于给出的示例值,哪个将返回:

0011001010
于 2013-03-13T18:13:10.053 回答