从字符串到字节的10位二进制数

时间:2013-03-13 17:53:55

标签: java binary

目前我有一个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

非常感谢任何帮助。

2 个答案:

答案 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