Я нашел следующий способ преобразования шестнадцатеричного значения в двоичное:
String binAddr = Integer.toBinaryString(Integer.parseInt(hexAddr, 16));
В то время как этот подход работает для небольших шестнадцатеричных чисел, шестнадцатеричное число, такое как следующее
A14AA1DBDB818F9759
Бросает NumberFormatException.
Поэтому я написал следующий метод, который, кажется, работает:
private String hexToBin(String hex){
String bin = "";
String binFragment = "";
int iHex;
hex = hex.trim();
hex = hex.replaceFirst("0x", "");
for(int i = 0; i < hex.length(); i++){
iHex = Integer.parseInt(""+hex.charAt(i),16);
binFragment = Integer.toBinaryString(iHex);
while(binFragment.length() < 4){
binFragment = "0" + binFragment;
}
bin += binFragment;
}
return bin;
}
Приведенный выше метод в основном берет каждый символ в шестнадцатеричной строке и преобразует его в двоичный эквивалент, дополняет его нулями, если необходимо, затем присоединяет его к возвращаемому значению.
Это правильный способ выполнить преобразование? Или я пропускаю что-то, что может привести к провалу моего подхода?
Заранее благодарим за любую помощь.