Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Kotlin将十六进制值转换为Base64_Kotlin_Base64_Hex - Fatal编程技术网

使用Kotlin将十六进制值转换为Base64

使用Kotlin将十六进制值转换为Base64,kotlin,base64,hex,Kotlin,Base64,Hex,我有这个价值: 263e5df7a93ec5f5ea6ac215ed957c30 当我填写时:(十六进制到Base64) 它还给了我: Jj5d96k+xfXqasIV7ZV8MA== 这是期望值。然而,当我在Kotlin尝试这个时 val encodedHexB64 = Base64.encodeToString("263e5df7a93ec5f5ea6ac215ed957c30".toByteArray(UTF_8), Base64.NO_WRAP) 它还给了我: MjYzZTVkZj

我有这个价值:

263e5df7a93ec5f5ea6ac215ed957c30
当我填写时:(十六进制到Base64) 它还给了我:

Jj5d96k+xfXqasIV7ZV8MA==
这是期望值。然而,当我在Kotlin尝试这个时

val encodedHexB64 = Base64.encodeToString("263e5df7a93ec5f5ea6ac215ed957c30".toByteArray(UTF_8), Base64.NO_WRAP)
它还给了我:

MjYzZTVkZjdhOTNlYzVmNWVhNmFjMjE1ZWQ5NTdjMzA=

如何在Kotlin中获得正确的值?

看起来输入字符串代表16个字节,其中每个字节用该字符串的两个十六进制数字字符编码

相反,
toByteArray(UTF_8)
以UTF-8编码方式对字符串进行编码,将每个字符转换为一个或多个字节。当您将这些字节转换为base64时,首先会得到更长的结果,其次是完全不同的字节

我认为将输入十六进制字符串转换为字节数组的正确方法是:

    val input = "263e5df7a93ec5f5ea6ac215ed957c30"
    val bytes = input.chunked(2).map { it.toInt(16).toByte() }.toByteArray()

然后像往常一样将这些
字节编码到base64。

要完成上一步:

val input = "263e5df7a93ec5f5ea6ac215ed957c30"
val bytes = input.chunked(2).map { it.toInt(16).toByte() }.toByteArray()
val encodeBase64 = Base64.encodeToString(bytes, Base64.DEFAULT)
现在您有了:Jj5d96k+xfXqasIV7ZV8MA==