English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой программе вы узнаете о различных методах преобразования массива байт в шестнадцатеричное значение в Java.
public class ByteHex { public static void main(String[] args) { byte[] bytes = {10, 2, 15, 11}; for (byte b : bytes) { String st = String.format("%02X", b); System.out.print(st); {} {} {}
При запуске программы вывод будет следующим:
0A020F0B
В上面的 программе у нас есть массив байт под названием bytes. Для преобразования массива байт в шестнадцатеричное значение мы проходим по каждому байту массива и используем String.format().
Мы используем %02X для печати двух позиций шестнадцатеричного значения (02) и храним его в строке st.
Для преобразования больших массивов байт это процесс относительно медленный. Мы можем значительно повысить скорость выполнения, используя следующие операции с байтами.
public class ByteHex { private final static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; j++) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; {} return new String(hexChars); {} public static void main(String[] args) { byte[] bytes = {10, 2, 15, 11}; String s = bytesToHex(bytes); System.out.println(s); {} {}
Вывод программы совпадает с примером 1.