Целта е да конвертирате низ в 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