如何在Kotlin中将uLong(64位)转换为字节数组

rqenqsqc  于 2023-02-24  发布在  Kotlin
关注(0)|答案(2)|浏览(173)

我需要写一些东西到BLE设备,只能接受字节数组。但是我想写一个无符号长整型,我怎么把它转换成字节数组呢?先谢谢你了。

fzwojiic

fzwojiic1#

这应该可以做到:

var source: ULong = 0uL            
val bytes = ByteArray(5)
bytes[0x0] = (source shr 32).toByte()
bytes[0x1] = (source shr 24).toByte()
bytes[0x2] = (source shr 16).toByte()
bytes[0x3] = (source shr 8).toByte()
bytes[0x4] = source.toByte()

这取决于您是否希望在索引0处更高阶地填充字节,等等。

gcuhipw9

gcuhipw92#

fun ULong.toByteArray(): ByteArray {
    val result = ByteArray(ULong.SIZE_BYTES)
    (0 until ULong.SIZE_BYTES).forEach {
        result[it] = this.shr(Byte.SIZE_BITS * it).toByte()
    }
    return result
}

然后用途:someULongValue.toByteArray()

相关问题