目前我有一个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
非常感谢任何帮助。
答案 0 :(得分:2)
您可以使用以下内容:
BigInteger i = new BigInteger("00000011" + "00", 2);
int x = i.intValue();
其中“00000011”是8位数字的字符串表示形式。 “00”模拟左移..
答案 1 :(得分:2)
这不适合你:
String input = "1100101";
int value = Integer.parseInt(input, 2) << 1;
System.out.println(Integer.toBinaryString(value));
返回:
11001010
解析二进制字符串并向左移位(一位数)。
您的方法中缺少的两件事情是specify a radix
解析表示二进制数字的字符串和left shift operator时的能力。
如果你想要领先零,我很惊讶地看到没有内置的方法可以实现这一目标,而目前的智慧是这是最佳方式(取自this discussion)
System.out.println(String.format("%10s", Integer.toBinaryString(value)).replace(' ', '0'));
对于给出的示例值,将返回以下内容:
0011001010