Можно ли создать ByteArray из ByteArrays в качестве элементов в kotlin? - PullRequest
1 голос
/ 21 октября 2019

У меня есть некоторые проблемы с созданием ByteArray var, где его элементы также ByteArray, я не знаю возможно ли возможно сначала? а как?

Ответы [ 2 ]

3 голосов
/ 21 октября 2019

A ByteArray - это как раз то, на что это похоже, массив байтов. Если вы хотите удерживать несколько байтовых массивов, вы можете использовать общий список или массив.

Примерно так:

// say you have three byte arrays
val ba1 = ByteArray(3) { it.toByte() }
val ba2 = ByteArray(3) { (it + 3).toByte() }
val ba3 = ByteArray(3) { (it + 6).toByte() }

// make a list of them like so
val allByteArray = listOf(ba1, ba2, ba3)

Судя по вашему более свежему комментарию, вы, возможно, захотите добавитьДля allByteArray в цикле, если это так, вы также можете использовать ArrayList, например, так:

val allByteArray = ArrayList<ByteArray>()
for (i in 0 until 3) {
    // some byte array
    val ba = ByteArray(3) { (it + (i*3)).toByte() }

    // add to list
    allByteArray.add(ba)
}

Также, как это предложил Алексей Романов, вы можете сделать это в конструкторе для MutableList(или то же самое можно сделать со списком, если он не должен быть изменяемым), например:

val allByteArray = MutableList(3) { i ->
    ByteArray(3) { (it + (i*3)).toByte() }
}
2 голосов
/ 21 октября 2019

Может быть, вы ищете 2D массив байтов? Вы можете создать массив ByteArrays:

val array = Array(3){ByteArray(3)}
array[0][1] = 3 // for example

или инициализировать его так, как вы его объявили:

val array = arrayOf(
    byteArrayOf(0, 1, 2),
    byteArrayOf(3, 4, 5),
    byteArrayOf(6, 7, 0)
)

В Java это будет:

byte[][] array = new byte[3][3];
// or
byte[][] array = {
    {0, 1, 2},
    {3, 4, 5},
    {6, 7, 0},
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...