我有这个值:
_Alignof(max_align_t)
当我填写以下内容时:https://8gwifi.org/base64Hex.jsp(十六进制为Base64) 它给了我:
263e5df7a93ec5f5ea6ac215ed957c30
这是期望值。但是,当我在Kotlin尝试此操作时,
Jj5d96k+xfXqasIV7ZV8MA==
它给了我回馈:
val encodedHexB64 = Base64.encodeToString("263e5df7a93ec5f5ea6ac215ed957c30".toByteArray(UTF_8), Base64.NO_WRAP)
如何在Kotlin中获得正确的值?
答案 0 :(得分:1)
看起来输入字符串代表16个字节,其中每个字节都用该字符串的两个十六进制字符编码。
相反,toByteArray(UTF_8)
使用UTF-8编码对字符串进行编码,从而将每个字符转换为一个或多个字节。将这些字节转换为base64时,首先获得更长的结果,其次-它们是完全不同的字节。
我想将输入的十六进制字符串转换为字节数组的正确方法是:
val input = "263e5df7a93ec5f5ea6ac215ed957c30"
val bytes = input.chunked(2).map { it.toInt(16).toByte() }.toByteArray()
然后像往常一样将这些bytes
编码为base64。
答案 1 :(得分:0)
要完成上一个操作:
flatMap()
现在您拥有:Jj5d96k + xfXqasas77V8MA ==