如何在Kotlin中对IntArray进行Base64编码

如何在Kotlin中对IntArray进行Base64编码,kotlin,base64,Kotlin,Base64,如何使用Kotlin对intArrayOf的buff进行base64编码 val vec = intArrayOf(1,2,3,4,5) val data =?! val base64Encoded = Base64.encodeToString(data, Base64.DEFAULT); IntArray的“ByteArray”表示可以这样计算: fun IntArray.toByteArray(): ByteArray { val result = ByteArray(thi

如何使用Kotlin对
intArrayOf
的buff进行base64编码

val vec = intArrayOf(1,2,3,4,5)
val data =?!
val base64Encoded = Base64.encodeToString(data, Base64.DEFAULT);
IntArray
的“ByteArray”表示可以这样计算:

 fun IntArray.toByteArray(): ByteArray {

    val result = ByteArray(this.size * 4)

        for ((idx, value) in this.withIndex()) {
            result[idx + 3] = (value and 0xFF).toByte()
            result[idx + 2] = ((value ushr 8) and 0xFF).toByte()
            result[idx + 1] = ((value ushr 16) and 0xFF).toByte()
            result[idx] = ((value ushr 24) and 0xFF).toByte()
        }

        return result
    }
然后可以对该结果进行Base64编码,如问题中所述:

val vec = intArrayOf(1,2,3,4,5)
val data = vec.toByteArray()
val base64Encoded = Base64.encodeToString(data, Base64.DEFAULT);

您需要将int数组转换为可共享的编码/格式,如JSON、yaml等。将本机数组(任何类型)转换为base64的想法不符合逻辑。换句话说,我们如何获得它的bin布局?idem byte[]您无法直接获取垃圾箱布局;您必须对其进行转换。但有不同的方法可以做到这一点-您需要什么?(如果所有值均为0–255(或-128–127),您可以将每个int转换为一个字节。否则,您必须转换为多个字节:4字节int、大或小的endian;或文本;或者您可以序列化数组对象;或者…)很好的解决方案,但我发现使用IntBuffer放值和检索数组很容易。