首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将ByteArray转换为字符串并在Kotlin中进行反向转换?

如何将ByteArray转换为字符串并在Kotlin中进行反向转换?
EN

Stack Overflow用户
提问于 2021-03-13 16:39:46
回答 2查看 1.9K关注 0票数 1

我正在尝试将字符串转换为ByteArray,并将ByteArray转换为Kotlin中的字符串。

我的程序崩溃了,所以我决定调试一下,我的惊讶之处是,当我将一个字符串转换为一个ByteArray,并将相同的ByteArray转换为一个字符串时,值就不一样了。

比如,如果我这么做:

代码语言:javascript
运行
复制
val ivEnc = "[B@9a7d34b"
val dataEnc = "[B@1125ac5"

passTextEncrypted.setText(ivEnc.toByteArray().toString())
passTextDecrypted.setText(dataEnc.toByteArray().toString())

我希望得到"[B@9a7d34b“和”B@1125ac5“。但是每次我运行这个程序时,我都会增加不同的“随机”值(都以“[B@”开头)。

我做错什么了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-13 16:46:40

当您只使用ByteArray打印一个toString()时,您实际上得到的是它的对象ID (它稍微复杂一些,但这个定义目前是可行的),而不是ByteArray本身的内容。

解决方案1

将字符集作为参数传递给toString()

代码语言:javascript
运行
复制
val bytes = "Hello!".toByteArray()
val string = bytes.toString(Charset.defaultCharset())

println(string) // Prints: "Hello!"

解决方案2

ByteArray作为参数传递给String构造函数:

代码语言:javascript
运行
复制
val bytes = "Hello!".toByteArray()
val string = String(bytes)

println(string) // Prints: "Hello!"
票数 2
EN

Stack Overflow用户

发布于 2021-03-13 16:46:20

在每次编码时,结果都会发生变化,因此如果指定编码,就不会丢失任何数据,可以使用Charset来实现这一点。

代码语言:javascript
运行
复制
 val s = "this is an example"
 val b = s.toByteArray(Charset.defaultCharset())
 println(b)
 val ss = String(b, Charset.defaultCharset())
 println(ss)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66616006

复制
相关文章

相似问题

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