Цель состоит в том, чтобы преобразовать строку в int в java.
Мои декларации:
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);
по-прежнему вызывает исключение. Что мне здесь не хватает?
Обновлено
Согласно тому, что вы, ребята, сказали, теперь я больше не получаю исключение, но когда я конвертирую двоичную строку в целое число, она, кажется, становится десятичным целым числом.
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)
. - person Joop Eggen   schedule 12.09.2014