从常量十六进制创建字节数组是否比下面的版本更好/更短的方法?

byteArrayOf(0xA1.toByte(), 0x2E.toByte(), 0x38.toByte(), 0xD4.toByte(), 0x89.toByte(), 0xC3.toByte())

我尝试将0xA1放在不带.toByte()的位置,但收到语法错误投诉,说integer literal does not conform to the expected type Byte。放置整数是可以的,但是我更喜欢使用十六进制形式,因为我的来源是十六进​​制字符串。任何提示将不胜感激。谢谢!

最佳答案

作为选项,您可以创建简单的功能

fun byteArrayOfInts(vararg ints: Int) = ByteArray(ints.size) { pos -> ints[pos].toByte() }

并使用它
val arr = byteArrayOfInts(0xA1, 0x2E, 0x38, 0xD4, 0x89, 0xC3)

10-08 03:39