【发布时间】:2014-11-06 21:16:21
【问题描述】:
目标是在java中将String转换为int。
我的声明:
String [] dataIn = new String[100];
int [] binVals = new int[100];
int i;
String toBinary;
我首先将十六进制字符串转换为二进制字符串。
static String hexToBin(String s) {
return new BigInteger(s,16).toString(2);
}
.....
.....
toBinary = hexToBin(dataIn[i]);
try{
int temp = Integer.parseInt(toBinary);
binVals[i] = temp;
System.out.println(temp);
} catch (NumberFormatException ex){
System.out.println("Not gonna work");
}
toBinary 是一个 32 位的字符串值,即 00011100...01
我将结果打印到控制台以确保它对整数转换有效。然而,使用Integer.parseInt(toBinary); 仍然会引发异常。我在这里错过了什么?
更新
按照你们说的,我现在已经没有收到异常了,但是当我把二进制String转成整数的时候,好像变成了十进制整数。
if (i % 2 == 0)
{
toBinary = hexToBin(dataIn[i]);
System.out.println("Binary in String: " + toBinary);
try{
int temp = Integer.parseInt(toBinary, 2);
binVals[i] = temp;
System.out.println("binVals[i] in int" + binVals[i]);
} catch (NumberFormatException ex){
System.out.println("Not gonna work");
}
//System.out.println(temp);
} else {
System.out.println("This should be a timestamp: " + dataIn[i]);
}
输出:
Binary in String: 1001010101010101010101010100000
binVals[i] in int1252698784
This should be a timestamp: 2068a40
【问题讨论】:
-
Integer.parseInt(toBinary, 2);再次具有相同的整数。尽管如果设置了符号位(负数),您确实最好使用(int)Long.parseLong(..., 2)。
标签: java binary numberformatexception parseint