Spec-Zone.ru › Kotlin 2

байтвгруппе

kotlin-stdlib/kotlin.text/HexFormat/BytesHexFormat/bytesPerGroup

Начиная с Kotlin: 2.2

val bytesPerGroup: Int

Максимальное число байтов в группе в строке; по умолчанию Int.MAX_VALUE.

Число байтов в каждой строке определяется параметром bytesPerLine.

При форматировании каждая строка разбивается на группы по bytesPerGroup байтов в каждой, за исключением последней группы в строке, в которой может быть меньше байтов, если число байтов в строке не делится на это значение без остатка. Соседние группы в каждой строке разделяются параметром groupSeparator. Обратите внимание: если это значение больше или равно числу байтов в строке, байты не разбиваются на группы.

При разборе каждая строка входной строки должна быть разделена на группы по bytesPerGroup байтов, за исключением последней группы в строке, в которой может быть меньше байтов. Соседние группы в каждой строке должны разделяться параметром groupSeparator. Разделитель разбирается без учета регистра.

Примеры

import kotlin.test.*

fun main() { 
   //sampleStart 
   val data = ByteArray(7) { it.toByte() }

// By default, both bytesPerLine and bytesPerGroup are set to Int.MAX_VALUE, which exceeds data.size.
// Hence, all bytes are formatted as a single line and a single group.
println(data.toHexString()) // 00010203040506
println("\"00010203040506\".hexToByteArray().contentEquals(data) is ${"00010203040506".hexToByteArray().contentEquals(data)}") // true

// Setting bytesPerGroup to 2 with the default group separator, which is two spaces.
val twoPerGroupFormat = HexFormat {
    bytes.bytesPerGroup = 2
}
println(data.toHexString(twoPerGroupFormat)) // 0001  0203  0405  06
println("\"0001  0203  0405  06\".hexToByteArray(twoPerGroupFormat).contentEquals(data) is ${"0001  0203  0405  06".hexToByteArray(twoPerGroupFormat).contentEquals(data)}") // true

// Specifying a custom group separator, a dot in this case.
val dotGroupSeparatorFormat = HexFormat {
    bytes {
        bytesPerGroup = 2
        groupSeparator = "."
    }
}
println(data.toHexString(dotGroupSeparatorFormat)) // 0001.0203.0405.06
println("\"0001.0203.0405.06\".hexToByteArray(dotGroupSeparatorFormat).contentEquals(data) is ${"0001.0203.0405.06".hexToByteArray(dotGroupSeparatorFormat).contentEquals(data)}") // true

// If bytesPerLine is less than or equal to bytesPerGroup, each line is treated as a single group,
// hence no group separator is used.
val lessBytesPerLineFormat = HexFormat {
    bytes {
        bytesPerLine = 3
        bytesPerGroup = 4
        groupSeparator = "|"
    }
}
println(data.toHexString(lessBytesPerLineFormat)) // 000102\n030405\n06
println("\"000102\\n030405\\n06\".hexToByteArray(lessBytesPerLineFormat).contentEquals(data) is ${"000102\n030405\n06".hexToByteArray(lessBytesPerLineFormat).contentEquals(data)}") // true

// When bytesPerLine is greater than bytesPerGroup, each line is split into multiple groups.
val moreBytesPerLineFormat = HexFormat {
    bytes {
        bytesPerLine = 5
        bytesPerGroup = 2
        groupSeparator = "."
    }
}
println(data.toHexString(moreBytesPerLineFormat)) // 0001.0203.04\n0506
println("\"0001.0203.04\\n0506\".hexToByteArray(moreBytesPerLineFormat).contentEquals(data) is ${"0001.0203.04\n0506".hexToByteArray(moreBytesPerLineFormat).contentEquals(data)}") // true

// Parsing fails due to incorrect group separator.
// "0001  0203  04\n0506".hexToByteArray(moreBytesPerLineFormat) // will fail with IllegalArgumentException 
   //sampleEnd
}

© 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/bytes-per-group.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API