我在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
。
有什么建议吗?
答案 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
,因为它包含所有必要的信息。