将字符串转换为Kotlin中的ByteArray

时间:2018-09-16 18:47:05

标签: arrays string kotlin

我在kotlin中具有String格式的变量:

context = {'request': request}
serializer = ExampleSerializer(instance, context=context)
return Response(serializer.data)

我想将其数据类型从String更改为var a ="[B@53c1c428" ,即,将其数据类型转换为ByteArray,类似于:

ByteArray

我也尝试过:

var b: ByteArray = a ,但这会引发异常

如果我这样做:

var b = a as ByteArray,我得到的输出如下:

var b = a.toByteArray()

但是我希望[B@3aea9e4 [B@53c1c428

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

只需澄清一下: [B@53c1c428是该对象的十六进制哈希码,前缀为B[@。字符串"[B@53c1c428"本身不包含重建ByteArray所需的数据。


考虑一下:

val str = "Test"
val byteArray = str.toByteArray()
println(Integer.toHexString(byteArray.hashCode())) // 1f32e575
println(byteArray) // [B@ + hash code as hexadecimal representation

val str2 = "This is a really long text and no 8 digit hex number in this world could encode it."
val byteArray2 = str2.toByteArray()
println(Integer.toHexString(byteArray2.hashCode())) // 279f2327
println(byteArray2) // [B@ + hash code as hexadecimal representation

toByteArray()已经给您ByteArray。如果要将单个数字打印为整数,请执行以下操作:

val str = "Test"
println(str.toByteArray().joinToString(" "){ "$it" })

输出:

  

84 101115116

此输出足以完全恢复ByteArray,因为它包含所有必要的信息。