我有一个带字节值的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}
我不知道从哪里开始。我该怎么办?
谢谢你们。问题回答了。
答案 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.parseInt
或Short.parseShort
代替Byte.parseByte
。不要忘记Java中的字节是有符号的,所以你只有[-128,127]的范围。特别是,您无法使用上面的代码解析“10000000”。如果您需要[0,255]的范围,则可能需要使用short
或int
。
答案 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,而您使用的代码将输入字符串视为十进制。