我想使用一个foreach循环作为表达式(只是为了好玩),但是我无法做到这一点,而且我被困在上面
在我的示例中,我想将字符串转换为此字符串的字节码表示形式。
什么是有效的,但我认为这很丑
fun bytecoderepr(arg: String):String {
var bcr:String = ""
arg.toByteArray().forEach {
bcr += it.toString()
}
return bcr
}
按预期工作,并为“ gconf400”返回“ 10399111110102524848”
什么是行不通的,但我想实现
fun bytecoderepr(arg: String):String =
arg.toByteArray().forEach().toString()
不会编译,因为foreach需要“操作”。
我可以将数组转换为字符串,但不返回字节码表示形式,而是字节码字符串转换
fun bytecoderepr(arg: String):String =
arg.toByteArray().toString()
返回“ [B @ 1a407d53”
答案 0 :(得分:4)
您可以使用joinToString功能:
fun bytecoderepr(arg: String) = arg.toByteArray().joinToString("")
答案 1 :(得分:2)
另一个选择是,您可以进行java.util.Arrays.toString(arg.toByteArray())
。
与joinToString("")
相比,它的方法调用更少,结构更紧凑,但灵活性更低(例如:无法指定分隔符)。