Класс HexFormat
public final class HexFormat extends Object
HexFormat преобразует байты и символы в строки, закодированные в шестнадцатеричном формате, которые могут включать дополнительный форматирующий разметку, такую как префиксы, суффиксы и разделители. Существуют два фабричных метода HexFormat с предопределенными параметрами of() и ofDelimiter(delimiter). Для других комбинаций параметров методы withXXX возвращают копии HexFormat, измененные с помощью withPrefix(String), withSuffix(String), withDelimiter(String) или выбора параметров withUpperCase() или withLowerCase().
Для преобразований примитивных типов в шестнадцатеричные строки методы toHexDigits включают toHexDigits(byte), toHexDigits(int) и toHexDigits(long) и т. д. По умолчанию используются строчные символы "0-9","a-f". Для преобразований, производящих шестнадцатеричные символы в верхнем регистре, используются символы "0-9","A-F". Рассматривается только параметр HexFormat.isUpperCase(); разделитель, префикс и суффикс не используются.
Для преобразований шестнадцатеричных строк в примитивные типы методы fromHexDigits включают fromHexDigits(string), fromHexDigitsToLong(string) и fromHexDigit(int), которые преобразуют один символ или код символа. При преобразовании из шестнадцатеричных символов цифры и символы верхнего и нижнего регистра в "0-9", "a-f", and "A-F" преобразуются в соответствующие значения 0-15. Разделитель, префикс, суффикс и параметры верхнего регистра не используются.
Для преобразований массивов байтов в форматированные шестнадцатеричные строки методы formatHex включают formatHex(byte[]) и formatHex(Appendable, byte[]). Отформатированный вывод представляет собой строку или добавляется к Appendable, такому как StringBuilder или PrintStream. Каждое значение байта форматируется как префикс, две шестнадцатеричные цифры из цифр верхнего или нижнего регистра и суффикс. Разделитель следует за каждым отформатированным значением, за исключением последнего. Для преобразований, производящих шестнадцатеричные строки в верхнем регистре, используйте withUpperCase().
Для преобразований отформатированных шестнадцатеричных строк в массивы байтов методы parseHex включают parseHex(CharSequence) и parseHex(char[], offset, length). Каждое значение байта анализируется из префикса, двух нечувствительных к регистру шестнадцатеричных символов и суффикса. Разделитель следует за каждым отформатированным значением, за исключением последнего.
- Примечание API:
- Например, отдельный байт преобразуется в строку шестнадцатеричных цифр с помощью
toHexDigits(int), а строка преобразуется в примитивное значение с помощьюfromHexDigits(string).HexFormat hex = HexFormat.of(); byte b = 127; String byteStr = hex.toHexDigits(b); byte byteVal = (byte)hex.fromHexDigits(byteStr); assert(byteStr.equals("7f")); assert(b == byteVal); // The hexadecimal digits are: "7f"Для форматирования с разделителем запятая (
", ") и префиксом ("#") с использованием строчных шестнадцатеричных цифрHexFormat:HexFormat commaFormat = HexFormat.ofDelimiter(", ").withPrefix("#"); byte[] bytes = {0, 1, 2, 3, 124, 125, 126, 127}; String str = commaFormat.formatHex(bytes); byte[] parsed = commaFormat.parseHex(str); assert(Arrays.equals(bytes, parsed)); // The formatted string is: "#00, #01, #02, #03, #7c, #7d, #7e, #7f"Для отпечатков значений байтов, которые используют разделитель двоеточие (
":") и символы верхнего регистра,HexFormat:HexFormat formatFingerprint = HexFormat.ofDelimiter(":").withUpperCase(); byte[] bytes = {0, 1, 2, 3, 124, 125, 126, 127}; String str = formatFingerprint.formatHex(bytes); byte[] parsed = formatFingerprint.parseHex(str); assert(Arrays.equals(bytes, parsed)); // The formatted string is: "00:01:02:03:7C:7D:7E:7F"Это класс базирующийся на значении; использование операций, чувствительных к идентификатору (включая равенство ссылок (
==), идентификатор хэш-кода или синхронизация) на экземплярахHexFormatможет привести к непредсказуемым результатам и следует избегать. Для сравнений следует использовать методequals.Этот класс неизменяемый и потокобезопасный.
Если не указано иное, передача null-аргумента любому методу приведет к выбросу
NullPointerException. - С:
- 17
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
delimiter() |
Возвращает разделитель между шестнадцатеричными значениями в отформатированных шестнадцатеричных строках. |
boolean |
equals |
Возвращает true, если другой объект является HexFormat с теми же параметрами. |
String |
formatHex |
Возвращает шестнадцатеричную строку, отформатированную из массива байтов. |
String |
formatHex |
Возвращает шестнадцатеричную строку, отформатированную из диапазона массива байтов. |
<A extends Appendable> |
formatHex |
Добавляет отформатированные шестнадцатеричные строки из массива байтов в Appendable. |
<A extends Appendable> |
formatHex |
Добавляет отформатированные шестнадцатеричные строки из диапазона массива байтов в Appendable. |
static int |
fromHexDigit |
Возвращает значение для шестнадцатеричного символа или кодовой точки. |
static int |
fromHexDigits |
Возвращает значение int, разобранное из строки до восьми шестнадцатеричных символов. |
static int |
fromHexDigits |
Возвращает значение int, разобранное из диапазона строки до восьми шестнадцатеричных символов. |
static long |
fromHexDigitsToLong |
Возвращает значение типа long, разобранное из строки до шестнадцати шестнадцатеричных символов. |
static long |
fromHexDigitsToLong |
Возвращает значение типа long, разобранное из диапазона строки до шестнадцати шестнадцатеричных символов. |
int |
hashCode() |
Возвращает хэш-код для этого HexFormat. |
static boolean |
isHexDigit |
Возвращает true, если символ является допустимым шестнадцатеричным символом или кодовой точкой. |
boolean |
isUpperCase() |
Возвращает true, если шестнадцатеричные цифры заглавные, иначе false. |
static HexFormat |
of() |
Возвращает шестнадцатеричный форматировщик без разделителя и строчных символов. |
static HexFormat |
ofDelimiter |
Возвращает шестнадцатеричный форматировщик с разделителем и строчными символами. |
byte[] |
parseHex |
Возвращает массив байтов, содержащий шестнадцатеричные значения, разобранные из диапазона массива символов. |
byte[] |
parseHex |
Возвращает массив байтов, содержащий шестнадцатеричные значения, разобранные из строки. |
byte[] |
parseHex |
Возвращает массив байтов, содержащий шестнадцатеричные значения, разобранные из диапазона строки. |
String |
prefix() |
Возвращает префикс, используемый для каждого шестнадцатеричного значения в отформатированных шестнадцатеричных строках. |
String |
suffix() |
Возвращает суффикс, используемый для каждого шестнадцатеричного значения в отформатированных шестнадцатеричных строках. |
String |
toHexDigits |
Возвращает две шестнадцатеричные цифры для значения byte. |
String |
toHexDigits |
Возвращает четыре шестнадцатеричных символа для значения char. |
String |
toHexDigits |
Возвращает восемь шестнадцатеричных символов для значения int. |
String |
toHexDigits |
Возвращает шестнадцать шестнадцатеричных символов для значения long. |
String |
toHexDigits |
Возвращает до шестнадцати шестнадцатеричных символов для значения long. |
String |
toHexDigits |
Возвращает четыре шестнадцатеричных символа для значения short. |
<A extends Appendable> |
toHexDigits |
Добавляет две шестнадцатеричные цифры для значения байта в Appendable. |
char |
toHighHexDigit |
Возвращает шестнадцатеричный символ для старших 4 бит значения, рассматривая его как байт. |
char |
toLowHexDigit |
Возвращает шестнадцатеричный символ для младших 4 бит значения, рассматривая его как байт. |
String |
toString() |
Возвращает описание параметров форматировщика для заглавных букв, разделителя, префикса и суффикса. |
HexFormat |
withDelimiter |
Возвращает копию этого HexFormat с разделителем. |
HexFormat |
withLowerCase() |
Возвращает копию этого HexFormat для использования строчных шестнадцатеричных символов. |
HexFormat |
withPrefix |
Возвращает копию этого HexFormat с префиксом. |
HexFormat |
withSuffix |
Возвращает копию этого HexFormat с суффиксом. |
HexFormat |
withUpperCase() |
Возвращает копию этого HexFormat для использования заглавных шестнадцатеричных символов. |
Подробное описание методов
of
public static HexFormat of()
withDelimiter, withUpperCase, withLowerCase, withPrefix и withSuffix возвращают копии форматировщиков с новыми параметрами.- Возвращает:
- форматировщик шестнадцатеричных значений без разделителя и с символами в нижнем регистре
ofDelimiter
public static HexFormat ofDelimiter(String delimiter)
withDelimiter, withUpperCase, withLowerCase, withPrefix и withSuffix возвращают копии форматировщиков с новыми параметрами.- Параметры:
-
delimiter- разделитель, не null, может быть пустым - Возвращает:
- объект
HexFormatс разделителем и символами в нижнем регистре
withDelimiter
public HexFormat withDelimiter(String delimiter)
HexFormat с разделителем.- Параметры:
-
delimiter- разделитель, не null, может быть пустым - Возвращает:
- копию этого
HexFormatс разделителем
withPrefix
public HexFormat withPrefix(String prefix)
HexFormat с префиксом.- Параметры:
-
prefix- префикс, не null, может быть пустым - Возвращает:
- копию этого
HexFormatс префиксом
withSuffix
public HexFormat withSuffix(String suffix)
HexFormat с суффиксом.- Параметры:
-
suffix- суффикс, не null, может быть пустым - Возвращает:
- копию этого
HexFormatс суффиксом
withUpperCase
public HexFormat withUpperCase()
HexFormat для использования символов шестнадцатеричных значений в верхнем регистре. Символы шестнадцатеричных значений в верхнем регистре "0-9", "A-F".- Возвращает:
- копию этого
HexFormatс символами шестнадцатеричных значений в верхнем регистре
withLowerCase
public HexFormat withLowerCase()
HexFormat для использования символов шестнадцатеричных значений в нижнем регистре. Символы шестнадцатеричных значений в нижнем регистре "0-9", "a-f".- Возвращает:
- копию этого
HexFormatс символами шестнадцатеричных значений в нижнем регистре
delimiter
public String delimiter()
- Возвращает:
- разделитель, не null, может быть пустым
""
prefix
public String prefix()
- Возвращает:
- префикс, не null, может быть пустым
""
suffix
public String suffix()
- Возвращает:
- суффикс, не null, может быть пустым
""
isUpperCase
public boolean isUpperCase()
true, если шестнадцатеричные цифры в верхнем регистре, в противном случае false.- Возвращает:
-
true, если шестнадцатеричные цифры в верхнем регистре, в противном случаеfalse
formatHex
public String formatHex(byte[] bytes)
formatHex(bytes, 0, bytes.length)).- Параметры:
-
bytes- массив байтов, не null - Возвращает:
- шестнадцатеричное форматирование строки массива байтов
formatHex
public String formatHex(byte[] bytes, int fromIndex, int toIndex)
- Параметры:
-
bytes- массив байтов, не null -
fromIndex- начальный индекс диапазона, включительно -
toIndex- конечный индекс диапазона, исключая - Возвращает:
- шестнадцатеричное форматирование каждого байта диапазона массива
- Исключения:
-
IndexOutOfBoundsException- если диапазон массива находится за пределами границ
formatHex
public <A extends Appendable> A formatHex(A out, byte[] bytes)
Appendable. Каждое значение байта форматируется как префикс, две шестнадцатеричные цифры (выбранные из символов верхнего или нижнего регистра) и суффикс. Разделитель следует за каждым отформатированным значением, кроме последнего. Отформатированные шестнадцатеричные строки добавляются в нуле или более вызовов методов Appendable.- Тип параметров:
A- ТипAppendable- Параметры:
-
out-Appendable, не null -
bytes- массив байтов - Возвращает:
Appendable- Исключения:
-
UncheckedIOException- если произошла ошибка ввода-вывода при добавлении в выходной поток
formatHex
public <A extends Appendable> A formatHex(A out, byte[] bytes, int fromIndex, int toIndex)
Appendable. Каждое значение байта форматируется как префикс, две шестнадцатеричные цифры (выбранные из символов верхнего или нижнего регистра) и суффикс. Разделитель следует за каждым отформатированным значением, кроме последнего. Отформатированные шестнадцатеричные строки добавляются в нуле или более вызовов методов Appendable.- Тип параметров:
A- ТипAppendable- Параметры:
-
out-Appendable, не null -
bytes- массив байтов, не null -
fromIndex- начальный индекс диапазона, включительно -
toIndex- конечный индекс диапазона, исключая. - Возвращает:
Appendable- Исключения:
-
IndexOutOfBoundsException- если диапазон массива находится за пределами границ -
UncheckedIOException- если произошла ошибка ввода-вывода при добавлении в выходной поток
parseHex
public byte[] parseHex(CharSequence string)
- Параметры:
-
string- строка, содержащая значения байтов с префиксом, шестнадцатеричными цифрами, суффиксом и разделителями - Возвращает:
- массив байтов со значениями, извлеченными из строки
- Исключения:
-
IllegalArgumentException- если префикс или суффикс отсутствуют для каждого значения байта, значения байта не являются шестнадцатеричными символами или если разделитель отсутствует после всех, кроме последнего значения байта
parseHex
public byte[] parseHex(CharSequence string, int fromIndex, int toIndex)
- Parameters:
-
string- диапазон строк, содержащий шестнадцатеричные цифры, разделители, префикс и суффикс. -
fromIndex- начальный индекс диапазона, включительно -
toIndex- конечный индекс диапазона, исключая его - Returns:
- массив байтов со значениями, извлеченными из диапазона строки
- Throws:
-
IllegalArgumentException- если префикс или суффикс отсутствуют для каждого значения байта, значения байтов не являются шестнадцатеричными символами или если разделитель отсутствует после всех, кроме последнего значения байта -
IndexOutOfBoundsException- если диапазон строк выходит за пределы границ
parseHex
public byte[] parseHex(char[] chars, int fromIndex, int toIndex)
- Parameters:
-
chars- диапазон символьного массива, содержащий четное число шестнадцатеричных цифр, разделители, префикс и суффикс. -
fromIndex- начальный индекс диапазона, включительно -
toIndex- конечный индекс диапазона, исключая его - Returns:
- массив байтов со значениями, извлеченными из диапазона символьного массива
- Throws:
-
IllegalArgumentException- если префикс или суффикс отсутствуют для каждого значения байта, значения байтов не являются шестнадцатеричными символами или если разделитель отсутствует после всех, кроме последнего значения байта -
IndexOutOfBoundsException- если диапазон символьного массива выходит за пределы границ
toLowHexDigit
public char toLowHexDigit(int value)
isUpperCase() равен true, возвращаемый символ для значений 10-15 является заглавным "A-F", в противном случае возвращаемый символ является строчным "a-f". Значения в диапазоне 0-9 возвращаются как "0-9".- Parameters:
-
value- значение, используются только младшие 4 бита0-3значения - Returns:
- шестнадцатеричный символ для младших 4 битов
0-3значения
toHighHexDigit
public char toHighHexDigit(int value)
isUpperCase() равен true, возвращаемый символ для значений 10-15 является заглавным "A-F", в противном случае возвращаемый символ является строчным "a-f". Значения в диапазоне 0-9 возвращаются как "0-9".- Parameters:
-
value- значение, используются только биты4-7значения - Returns:
- шестнадцатеричный символ для битов
4-7значения
toHexDigits
public <A extends Appendable> A toHexDigits(A out, byte value)
Appendable. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Шестнадцатеричные символы добавляются в одном или нескольких вызовах методов Appendable. Разделитель, префикс и суффикс не используются.- Type Parameters:
A- ТипAppendable- Parameters:
-
out-Appendable, не null -
value- значение байта - Returns:
Appendable- Throws:
-
UncheckedIOException- если при добавлении в выходной поток произошла ошибка ввода-вывода
toHexDigits
public String toHexDigits(byte value)
byte. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Parameters:
-
value- значение байта - Returns:
- два шестнадцатеричных символа для значения байта
toHexDigits
public String toHexDigits(char value)
char. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Parameters:
-
value- значение типаchar - Returns:
- четыре шестнадцатеричных символа для значения
char
toHexDigits
public String toHexDigits(short value)
short. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Parameters:
-
value- значение типаshort - Returns:
- четыре шестнадцатеричных символа для значения
short
toHexDigits
public String toHexDigits(int value)
int. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Parameters:
-
value- значение типаint - Returns:
- восемь шестнадцатеричных символов для значения
int - See Also:
toHexDigits
public String toHexDigits(long value)
long. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Parameters:
-
value- значение типаlong - Returns:
- шестнадцать шестнадцатеричных символов для значения
long - See Also:
toHexDigits
public String toHexDigits(long value, int digits)
long. Каждый ниббл (4 бита) от старшего к младшему значащему биту значения форматируется так, как будто с помощью toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Parameters:
-
value- значение типаlong -
digits- число шестнадцатеричных цифр для возвращения, от 0 до 16 - Returns:
- шестнадцатеричные символы для значения
long - Throws:
-
IllegalArgumentException- еслиdigitsотрицательно или больше 16
isHexDigit
public static boolean isHexDigit(int ch)
true, если символ является корректным шестнадцатеричным символом или кодовым значением. Корректные шестнадцатеричные символы: -
'0' ('\u0030')по'9' ('\u0039')включительно, -
'A' ('\u0041')по'F' ('\u0046')включительно, и -
'a' ('\u0061')по'f' ('\u0066')включительно.
- Parameters:
-
ch- кодовое значение - Returns:
-
true, если символ является корректным шестнадцатеричным символом, иначеfalse
fromHexDigit
public static int fromHexDigit(int ch)
-
(ch - '0')для'0'по'9'включительно, -
(ch - 'A' + 10)для'A'по'F'включительно, и -
(ch - 'a' + 10)для'a'по'f'включительно.
- Parameters:
-
ch- символ или кодовое значение - Returns:
- значение
0-15 - Throws:
-
NumberFormatException- если кодовое значение не является шестнадцатеричным символом
fromHexDigits
public static int fromHexDigits(CharSequence string)
fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 32 бит нулями и возвращается как int.- Примечание API:
-
Integer.parseInt(s, 16)иInteger.parseUnsignedInt(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Отрицательные шестнадцатеричные строки могут быть обработаны с помощьюInteger.parseInt(String, int). - Параметры:
-
string- строка, содержащая до восьми шестнадцатеричных символов - Возвращает:
- значение, парсированное из строки
- Исключения:
-
IllegalArgumentException- если длина строки больше восьми (8) или любой из символов не является шестнадцатеричным символом
fromHexDigits
public static int fromHexDigits(CharSequence string, int fromIndex, int toIndex)
fromIndex до toIndex (не включая) парсируются от старшего к младшему с использованием fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 32 бит нулями и возвращается как int.- Примечание API:
-
Integer.parseInt(s, 16)иInteger.parseUnsignedInt(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Отрицательные шестнадцатеричные строки могут быть обработаны с помощьюInteger.parseInt(String, int). - Параметры:
-
string- строка, содержащая символы -
fromIndex- начальный индекс диапазона (включительно) -
toIndex- конечный индекс диапазона (исключительно). - Возвращает:
- значение, парсированное из диапазона строки
- Исключения:
-
IndexOutOfBoundsException- если диапазон выходит за пределы допустимого диапазона дляCharSequence -
IllegalArgumentException- если длина диапазона больше восьми (8) или любой из символов не является шестнадцатеричным символом
fromHexDigitsToLong
public static long fromHexDigitsToLong(CharSequence string)
fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 64 бит нулями и возвращается как long.- Примечание API:
-
Long.parseLong(s, 16)иLong.parseUnsignedLong(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Отрицательные шестнадцатеричные строки могут быть обработаны с помощьюLong.parseLong(String, int). - Параметры:
-
string- строка, содержащая до шестнадцати шестнадцатеричных символов - Возвращает:
- значение, парсированное из строки
- Исключения:
-
IllegalArgumentException- если длина строки больше шестнадцати (16) или любой из символов не является шестнадцатеричным символом
fromHexDigitsToLong
public static long fromHexDigitsToLong(CharSequence string, int fromIndex, int toIndex)
fromIndex до toIndex (не включая) парсируются от старшего к младшему с использованием fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 64 бит нулями и возвращается как long.- Примечание API:
-
Long.parseLong(s, 16)иLong.parseUnsignedLong(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Отрицательные шестнадцатеричные строки могут быть обработаны с помощьюLong.parseLong(String, int). - Параметры:
-
string- строка, содержащая символы -
fromIndex- начальный индекс диапазона (включительно) -
toIndex- конечный индекс диапазона (исключительно). - Возвращает:
- значение, парсированное из диапазона строки
- Исключения:
-
IndexOutOfBoundsException- если диапазон выходит за пределы допустимого диапазона дляCharSequence -
IllegalArgumentException- если длина диапазона больше шестнадцати (16) или любой из символов не является шестнадцатеричным символом
equals
public boolean equals(Object o)
true, если другой объект является HexFormat с теми же параметрами.hashCode
toString
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/HexFormat.html