Java: преобразование двоичной строки в шестую строку
Мне нужно преобразовать двоичную строку в шестнадцатеричную строку, но у меня есть проблема.
Я преобразовал двоичную строку в шестнадцатеричную строку с помощью этого метода:
public static String binaryToHex(String bin){
return Long.toHexString(Long.parseLong(bin,2));
}
это нормально! но я теряю нули слева от строки.
Пример:
метод возвращает это: 123456789ABCDEF,
но я хочу вернуть это:
00000123456789ABCDEF
Ответы
Ответ 1
Вместо Long.toHexString
я использовал бы Long.parseLong
для синтаксического анализа значения, а затем String.format
для вывода значения с требуемой шириной (21 в вашем примере):
public static String binaryToHex(String bin) {
return String.format("%21X", Long.parseLong(bin,2)) ;
}
Ответ 2
Не очень элегантный, но работает
public static String binaryToHex(String bin) {
String hex = Long.toHexString(Long.parseLong(bin, 2));
return String.format("%" + (int)(Math.ceil(bin.length() / 4.0)) + "s", hex).replace(' ', '0');
}
Я использовал String.format() для левой строки пэда с пробелами, а затем заменил(), чтобы заменить его нулями.
Ответ 3
Просто добавьте нули вручную. Здесь один из способов:
public static String binaryToHex(String bin){
return ("0000000000000000" + Long.toHexString(Long.parseLong(bin, 2)).replaceAll(".*.{16}", "$1");
}