Bytes Hex Format
Версия Kotlin: 2.2
class BytesHexFormat
Представляет параметры шестнадцатеричного формата для форматирования и разбора массивов байтов.
Эти параметры используются функциями ByteArray.toHexString и String.hexToByteArray соответственно для форматирования и разбора. Функции форматирования и разбора также доступны для UByteArray.
При форматировании массива байтов можно считать, что выполняются следующие шаги:
Байты разбиваются на строки по bytesPerLine байтов в каждой, за исключением последней строки, в которой байтов может быть меньше.
Каждая строка разбивается на группы по bytesPerGroup байтов в каждой, за исключением последней группы в строке, в которой байтов может быть меньше.
Все байты преобразуются в двухзначное шестнадцатеричное представление; перед каждым добавляется bytePrefix, а после него — byteSuffix.
Соседние отформатированные байты в каждой группе разделяются строкой byteSeparator.
Соседние группы в каждой строке разделяются строкой groupSeparator.
Соседние строки разделяются символом перевода строки (LF)
'\n'.
Например, рассмотрим приведённый ниже фрагмент:
val byteArray = byteArrayOf(0, 1, 2, 3, 4, 5, 6, 7)
val format = HexFormat {
bytes {
bytesPerLine = 6
bytesPerGroup = 4
groupSeparator = "|" // vertical bar
byteSeparator = " " // one space
bytePrefix = "0x"
byteSuffix = "" // empty string
}
}
println(byteArray.toHexString(format))
Для byteArray и format форматирование выполняется следующим образом:
8 байтов разбиваются на строки по 6 байтов. Первая строка содержит
0, 1, 2, 3, 4, 5, а вторая (и последняя) строка содержит6, 7.Затем каждая строка разбивается на группы по 4 байта. В первой строке образуются две группы:
0, 1, 2, 3и4, 5; во второй строке образуется одна группа:6, 7.Каждый байт преобразуется в шестнадцатеричное представление, перед которым добавляется
"0x", а после которого — пустая строка.Байты в каждой группе разделяются одним пробелом
" ".Группы в каждой строке разделяются символом вертикальной черты
"|".Строки разделяются символом LF
'\n'.
Вызов byteArray.toHexString(format) вернёт "0x00 0x01 0x02 0x03|0x04 0x05\n0x06 0x07", а его вывод в консоль будет таким:
0x00 0x01 0x02 0x03|0x04 0x05
0x06 0x07
При разборе входная строка должна соответствовать формату, заданному этими параметрами. Однако разбор выполняется с некоторой гибкостью: в качестве разделителя строк допускается любая из последовательностей символов CRLF, LF или CR. Кроме того, разбор groupSeparator, byteSeparator, bytePrefix, byteSuffix и шестнадцатеричных цифр выполняется без учёта регистра.
Этот класс неизменяем и не может быть создан или настроен напрямую. Чтобы создать новый формат, используйте функцию-конструктор HexFormat { } и задайте параметры свойства bytes в фигурных скобках. Например, используйте val format = HexFormat { bytes.bytesPerLine = 16 }, чтобы задать bytesPerLine. Свойство bytes имеет тип BytesHexFormat.Builder; его параметры можно настроить, и они соответствуют параметрам этого класса.
Типы
Свойства
Версия Kotlin: 2.2
val bytePrefix: String
Строка, которая непосредственно предшествует двухзначному шестнадцатеричному представлению каждого байта.
Версия Kotlin: 2.2
val byteSeparator: String
Строка, используемая для разделения соседних байтов внутри группы.
Версия Kotlin: 2.2
val bytesPerGroup: Int
Максимальное количество байтов в группе строки; по умолчанию — Int.MAX_VALUE.
Версия Kotlin: 2.2
val bytesPerLine: Int
Максимальное количество байтов в строке; по умолчанию — Int.MAX_VALUE.
Версия Kotlin: 2.2
val byteSuffix: String
Строка, которая непосредственно следует за двухзначным шестнадцатеричным представлением каждого байта.
Версия Kotlin: 2.2
val groupSeparator: String
Строка, используемая для разделения соседних групп в строке; по умолчанию — два пробела (" ").
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.text/-hex-format/-bytes-hex-format/index.html