android之在 Kotlin 中,将 Long 转换为 uint32 ByteArray 并将 Int 转换为 uint8 的最简洁方法是什么

duanxz 阅读:255 2025-06-02 22:19:02 评论:0

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 中是否正确/必要。

编辑:修复每个评论的示例,还演示了更改字节顺序。感谢您的反馈。我将接受演示如何在没有 ByteBuffer 的情况下执行此操作的答案。

请您参考如下方法:

我不喜欢使用 ByteBuffer因为它增加了对 JVM 的依赖。相反,我使用:

fun longToUInt32ByteArray(value: Long): ByteArray { 
    val bytes = ByteArray(4) 
    bytes[3] = (value and 0xFFFF).toByte() 
    bytes[2] = ((value ushr 8) and 0xFFFF).toByte() 
    bytes[1] = ((value ushr 16) and 0xFFFF).toByte() 
    bytes[0] = ((value ushr 24) and 0xFFFF).toByte() 
    return bytes 
} 


标签:Android
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号