Класс 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 Note:
- Например, отдельный байт преобразуется в строку шестнадцатеричных цифр с помощью
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. - Since:
- 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, может быть пустым - Возвращает:
- a
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 битов
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)
fromIndex по toIndex, не включая конечный, разбираются от старшего к младшему с помощью fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 32 битов нулями и возвращается как int.- API Note:
-
Integer.parseInt(s, 16)иInteger.parseUnsignedInt(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Для разбора знаковых шестнадцатеричных строк можно использоватьInteger.parseInt(String, int). - Parameters:
-
string- a CharSequence, содержащая символы -
fromIndex- начальный индекс диапазона, включительно -
toIndex- конечный индекс диапазона, не включая конечный символ. - Returns:
- значение, разобранное из диапазона строки
- Throws:
-
IndexOutOfBoundsException- если диапазон выходит за пределы допустимого дляCharSequence -
IllegalArgumentException- если длина диапазона больше восьми (8) или любой символ не является шестнадцатеричным символом
fromHexDigitsToLong
public static long fromHexDigitsToLong(CharSequence string)
fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 64 битов нулями и возвращается как long.- API Note:
-
Long.parseLong(s, 16)иLong.parseUnsignedLong(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Для разбора знаковых шестнадцатеричных строк можно использоватьLong.parseLong(String, int). - Parameters:
-
string- a CharSequence, содержащая до шестнадцати шестнадцатеричных символов - Returns:
- значение, разобранное из строки
- Throws:
-
IllegalArgumentException- если длина строки больше шестнадцати (16) или любой символ не является шестнадцатеричным символом
fromHexDigitsToLong
public static long fromHexDigitsToLong(CharSequence string, int fromIndex, int toIndex)
fromIndex по toIndex, не включая конечный, разбираются от старшего к младшему с помощью fromHexDigit(int) для формирования беззнакового значения. Значение расширяется до 64 битов нулями и возвращается как long.- API Note:
-
Long.parseLong(s, 16)иLong.parseUnsignedLong(s, 16)аналогичны, но допускают все шестнадцатеричные символы Юникода, определённые вCharacter.digit(ch, 16).HexFormatиспользует только шестнадцатеричные символы"0-9","A-F"и"a-f". Для разбора знаковых шестнадцатеричных строк можно использоватьLong.parseLong(String, int). - Parameters:
-
string- a CharSequence, содержащая символы -
fromIndex- начальный индекс диапазона, включительно -
toIndex- конечный индекс диапазона, не включая конечный символ. - Returns:
- значение, разобранное из диапазона строки
- Throws:
-
IndexOutOfBoundsException- если диапазон выходит за пределы допустимого дляCharSequence -
IllegalArgumentException- если длина диапазона больше шестнадцати (16) или любой символ не является шестнадцатеричным символом
equals
public boolean equals(Object o)
true , если другой объект является HexFormat с теми же параметрами.- Overrides:
-
equalsв классеObject - Parameters:
-
o- объект, может быть null - Returns:
-
true, если другой объект являетсяHexFormatи параметры uppercase, delimiter, prefix и suffix равны; в противном случаеfalse - See Also:
hashCode
public int hashCode()
HexFormat.- Overrides:
-
hashCodeв классеObject - Returns:
- хэш-код для этого
HexFormat - See Also:
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- описание этого
HexFormat
© 1993, 2023, 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/21/docs/api/java.base/java/util/HexFormat.html