如何将二进制表示中的字节转换为java中的int

时间:2014-03-10 06:36:31

标签: java string int byte

我有一个带字节值的String []

String[] s = {"110","101","100","11","10","1","0"};

循环使用s,我希望从中获取int值。

我目前正在使用此

Byte b = new Byte(s[0]); // s[0] = 110
int result = b.intValue(); // b.intValue() is returning 110 instead of 6

由此,我试图得到结果,{6,5,4,3,2,1}

我不知道从哪里开始。我该怎么办?

谢谢你们。问题回答了。

5 个答案:

答案 0 :(得分:4)

您可以使用重载的Integer.parseInt(String s, int radix)方法进行此类转换。这样您就可以跳过Byte b = new Byte(s[0]);段代码。

int result = Integer.parseInt(s[0], 2); // radix 2 for binary

答案 1 :(得分:3)

您正在使用Byte构造函数,该构造函数只需String并将其解析为十进制值。我想你实际上想要Byte.parseByte(String, int),它允许你指定基数:

for (String text : s) {
    byte value = Byte.parseByte(text, 2);
    // Use value
}

请注意,我使用了原始Byte值(由Byte.parseByte返回)而不是Byte包装器(由Byte.valueOf返回)。

当然,您可以使用Integer.parseIntShort.parseShort代替Byte.parseByte。不要忘记Java中的字节是有符号的,所以你只有[-128,127]的范围。特别是,您无法使用上面的代码解析“10000000”。如果您需要[0,255]的范围,则可能需要使用shortint

答案 2 :(得分:2)

您可以使用Integer#parseInt()方法将String bindery直接转换为十进制表示。无需转换为Byte然后转换为十进制

int decimalValue = Integer.parseInt(s[0], 2);

答案 3 :(得分:2)

您应该使用Byte b = Byte.valueof(s[i], 2)。现在它解析字符串将其视为十进制值。您应该使用valueOf并将2作为基数传递。

答案 4 :(得分:1)

跳过Byte步骤。只需使用Integer.parseInt(String s, int radix)将其解析为一个int:

int result = Integer.parseInt(s[0], 2);

2指定基数2,而您使用的代码将输入字符串视为十进制。