Java: преобразование двоичной строки в шестую строку - java


1

Мне нужно преобразовать двоичную строку в шестнадцатеричную строку, но у меня есть проблема. Я преобразовал двоичную строку в шестнадцатеричную строку с помощью этого метода:

public static String binaryToHex(String bin){
   return Long.toHexString(Long.parseLong(bin,2));
}

это нормально! но я теряю нули слева от строки. Пример:

метод возвращает это: 123456789ABCDEF, но я хочу вернуть это:

00000123456789ABCDEF

  •  7
  •  3
  • 8 фев 2020 2020-02-08 08:05:24

3 ответа

0

Просто добавьте нули вручную. Здесь один из способов:

public static String binaryToHex(String bin){
    return ("0000000000000000" + Long.toHexString(Long.parseLong(bin, 2)).replaceAll(".*.{16}", "$1");
}
  • 8 фев 2020 2020-02-08 08:05:25
0

Не очень элегантный, но работает

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() для левой строки пэда с пробелами, а затем заменил(), чтобы заменить его нулями.

6

Вместо Long.toHexString я использовал бы Long.parseLong для синтаксического анализа значения, а затем String.format для вывода значения с требуемой шириной (21 в вашем примере):


public static String binaryToHex(String bin) {
   return String.format("%21X", Long.parseLong(bin,2)) ;
}