Класс 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)
- Параметры:
-
string— диапазон строки, содержащий шестнадцатеричные цифры, разделители, префикс и суффикс. -
fromIndex— начальный индекс диапазона включительно -
toIndex— конечный индекс диапазона исключительно. - Возвращает:
- массив байтов со значениями, разобранными из диапазона строки
- Выбрасывает:
-
IllegalArgumentException— если для какого-либо значения байта отсутствует префикс или суффикс, значения байтов не являются шестнадцатеричными символами или после всех значений байтов, кроме последнего, отсутствует разделитель -
IndexOutOfBoundsException— если диапазон строки выходит за допустимые границы
parseHex
public byte[] parseHex(char[] chars, int fromIndex, int toIndex)
- Параметры:
-
chars— диапазон массива символов, содержащий чётное число шестнадцатеричных цифр, разделители, префикс и суффикс. -
fromIndex— начальный индекс диапазона включительно -
toIndex— конечный индекс диапазона исключительно. - Возвращает:
- массив байтов со значениями, разобранными из диапазона массива символов
- Выбрасывает:
-
IllegalArgumentException— если для какого-либо значения байта отсутствует префикс или суффикс, значения байтов не являются шестнадцатеричными символами или после всех значений байтов, кроме последнего, отсутствует разделитель -
IndexOutOfBoundsException— если диапазон массива символов выходит за допустимые границы
toLowHexDigit
public char toLowHexDigit(int value)
isUpperCase() равен true, возвращаемый символ для значений 10-15 — прописная буква "A-F"; в противном случае возвращаемый символ — строчная буква "a-f". Значения в диапазоне 0-9 возвращаются как "0-9".- Параметры:
-
value— значение; используются только младшие 4 бита0-3значения - Возвращает:
- шестнадцатеричный символ для младших 4 битов
0-3значения
toHighHexDigit
public char toHighHexDigit(int value)
isUpperCase() равен true, возвращаемый символ для значений 10-15 — прописная буква "A-F"; в противном случае возвращаемый символ — строчная буква "a-f". Значения в диапазоне 0-9 возвращаются как "0-9".- Параметры:
-
value— значение; используются только биты4-7значения - Возвращает:
- шестнадцатеричный символ для битов
4-7значения
toHexDigits
public <A extends Appendable> A toHexDigits(A out, byte value)
Appendable. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Шестнадцатеричные символы добавляются за один или несколько вызовов методов Appendable. Разделитель, префикс и суффикс не используются.- Параметры типа:
A— типAppendable- Параметры:
-
out—Appendable, не null -
value— значение байта - Возвращает:
Appendable- Выбрасывает:
-
UncheckedIOException— если при добавлении в выходной поток возникает исключение ввода-вывода
toHexDigits
public String toHexDigits(byte value)
byte. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Параметры:
-
value— значение байта - Возвращает:
- два шестнадцатеричных символа для значения байта
toHexDigits
public String toHexDigits(char value)
char. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Параметры:
-
value— значениеchar - Возвращает:
- четыре шестнадцатеричных символа для значения
char
toHexDigits
public String toHexDigits(short value)
short. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Параметры:
-
value— значениеshort - Возвращает:
- четыре шестнадцатеричных символа для значения
short
toHexDigits
public String toHexDigits(int value)
int. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Параметры:
-
value— значениеint - Возвращает:
- восемь шестнадцатеричных символов для значения
int - См. также:
toHexDigits
public String toHexDigits(long value)
long. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Параметры:
-
value— значениеlong - Возвращает:
- шестнадцать шестнадцатеричных символов для значения
long - См. также:
toHexDigits
public String toHexDigits(long value, int digits)
long. Каждый полубайт (4 бита) значения, от старшего к младшему, форматируется так же, как методом toLowHexDigit(nibble). Разделитель, префикс и суффикс не используются.- Параметры:
-
value— значениеlong -
digits— количество возвращаемых шестнадцатеричных цифр, от 0 до 16 - Возвращает:
- шестнадцатеричные символы для значения
long - Выбрасывает:
-
IllegalArgumentException— еслиdigitsменьше нуля или больше 16
isHexDigit
public static boolean isHexDigit(int ch)
true, если символ или кодовая точка является допустимым шестнадцатеричным символом. Допустимые шестнадцатеричные символы: -
'0' ('\u0030')–'9' ('\u0039')включительно, -
'A' ('\u0041')–'F' ('\u0046')включительно и -
'a' ('\u0061')–'f' ('\u0066')включительно.
- Параметры:
-
ch— кодовая точка - Возвращает:
-
true, если символ является допустимым шестнадцатеричным символом, иначе —false
fromHexDigit
public static int fromHexDigit(int ch)
-
(ch - '0')для символов от'0'до'9'включительно, -
(ch - 'A' + 10)для символов от'A'до'F'включительно и -
(ch - 'a' + 10)для символов от'a'до'f'включительно.
- Параметры:
-
ch— символ или кодовая точка - Возвращает:
- значение
0-15 - Выбрасывает:
-
NumberFormatException— если кодовая точка не является шестнадцатеричным символом
fromHexDigits
public static int fromHexDigits(CharSequence string)
int, разобранное из строки, содержащей не более восьми шестнадцатеричных символов. Шестнадцатеричные символы разбираются от старшего к младшему с помощью fromHexDigit(int) для формирования беззнакового значения. Значение расширяется нулями до 32 бит и возвращается как int.- Примечание к API:
-
Integer.parseInt(s, 16)иInteger.parseUnsignedInt(s, 16)похожи, но допускают все шестнадцатеричные цифры Unicode, определённые методомCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Знаковые шестнадцатеричные строки можно разобрать с помощьюInteger.parseInt(String, int). - Параметры:
-
string— CharSequence, содержащая не более восьми шестнадцатеричных символов - Возвращает:
- значение, разобранное из строки
- Выбрасывает:
-
IllegalArgumentException— если длина строки больше восьми (8) или любой из символов не является шестнадцатеричным
fromHexDigits
public static int fromHexDigits(CharSequence string, int fromIndex, int toIndex)
int, разобранное из диапазона строки, содержащего не более восьми шестнадцатеричных символов. Символы в диапазоне от fromIndex до toIndex, не включая последний индекс, разбираются от старшего к младшему с помощью fromHexDigit(int) для формирования беззнакового значения. Значение расширяется нулями до 32 бит и возвращается как int.- Примечание к API:
-
Integer.parseInt(s, 16)иInteger.parseUnsignedInt(s, 16)похожи, но допускают все шестнадцатеричные цифры Unicode, определённые методомCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Знаковые шестнадцатеричные строки можно разобрать с помощьюInteger.parseInt(String, int). - Параметры:
-
string— CharSequence, содержащая символы -
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)похожи, но допускают все шестнадцатеричные цифры Unicode, определённые методомCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Знаковые шестнадцатеричные строки можно разобрать с помощьюLong.parseLong(String, int). - Параметры:
-
string— CharSequence, содержащая не более шестнадцати шестнадцатеричных символов - Возвращает:
- значение, разобранное из строки
- Выбрасывает:
-
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)похожи, но допускают все шестнадцатеричные цифры Unicode, определённые методомCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Знаковые шестнадцатеричные строки можно разобрать с помощьюLong.parseLong(String, int). - Параметры:
-
string— CharSequence, содержащая символы -
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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/HexFormat.html