首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Base64Utils.encode不会生成有效的base64编码

Base64Utils.encode不会生成有效的base64编码
EN

Stack Overflow用户
提问于 2019-06-11 06:05:01
回答 1查看 323关注 0票数 0

在通过网络发送之前,我正在尝试在base64中对字节数组进行编码。下面的encode()函数的输出不是有效的base64,因为我从我的研究中读到的是字符串的长度需要是4的倍数。另外,如果长度不是4的倍数,字符串就不会用"=“填充。我假设由于以前没有人遇到过这个问题,是不是下面的代码中有什么错误使得base64不是4的倍数?

代码语言:javascript
复制
    private val messageAdapter = Moshi.Builder()
        .add(KotlinJsonAdapterFactory())
        .build()
        .adapter(RealTimePayload::class.java)

    fun encode(realTimePayload: RealTimePayload): String? {
        val jsonPayload = messageAdapter.toJson(realTimePayload)
        val compressedData = zip(jsonPayload)
        return Base64Utils.encode(compressedData)
    }

    fun decode(encodedString: String): RealTimePayload? {
        val gzippedData = Base64Utils.decode(encodedString)
        val jsonData = unzip(gzippedData)
        return messageAdapter.fromJson(jsonData)
    }

    private fun unzip(content: ByteArray): String =
        GZIPInputStream(content.inputStream()).bufferedReader().use { it.readText() }

    private fun zip(content: String): ByteArray {
        val bos = ByteArrayOutputStream()
        GZIPOutputStream(bos).bufferedWriter().use { it.write(content) }
        return bos.toByteArray()
    }
}

编辑:我应该提一下,最终编码的字符串有一些尾随的‘=’,但长度仍然不是4的倍数。如果我应该提供更多信息,请告诉我?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 06:36:12

在编码的字符串中是否有一些行终止符?

com.google.android.gms.common.util.Base64Utils#encode将标志0传递给Base64#encodeToString。这意味着结果将是一个多行的、填充的、非url安全的字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56534089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档