【发布时间】:2018-08-01 22:13:23
【问题描述】:
fun longToByteArray(value: Long): ByteArray {
val bytes = ByteArray(8)
ByteBuffer.wrap(bytes).putLong(value)
return Arrays.copyOfRange(bytes, 4, 8)
}
fun intToUInt8(value: Int): ByteArray {
val bytes = ByteArray(4)
ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).putInt(value and 0xff)
var array = Arrays.copyOfRange(bytes, 0, 1)
return array
}
我认为这些是一些 Java 方法的 Kotlin 等价物,但我想知道这些方法在 Kotlin 中是否正确/必要。
编辑:修复每个 cmets 的示例,还演示了更改字节顺序。感谢您的反馈。我将接受演示如何在没有 ByteBuffer 的情况下执行此操作的答案。
【问题讨论】:
-
myInt.toByte() and 0xFF.toByte()没有多大意义。不过,myInt and 0xFF可能会。您不希望结果是Byte,因为Byte是固有签名的。 -
@LouisWasserman 感谢您查看并关注此 Louis。
-
必须是
val bytes = ByteArray(8)
标签: android arrays kotlin byte uint32