将字节数组转换为字符串

convert a byte array to string

我的Scala代码从字节流中接收到一个二进制文件,它看起来像[61 62 63 64]。内容是"abcd"。 我使用 toString 将其转换为 p,但失败了。 如何将其打印为字符串?

如果你知道它的字符集,你总是可以将字节数组转换为字符串,

val str = new String(bytes, StandardCharsets.UTF_8)

如果您不指定,将使用默认值 Charset

您可以将字节数组转换为字符数组,然后从中构造一个字符串

scala> val bytes = Array[Byte]('a','b','c','d')
bytes: Array[Byte] = Array(97, 98, 99, 100)

scala> (bytes.map(_.toChar)).mkString 
res10: String = abcd

scala> 

我正在寻找的字节到字符串函数是每个字节只是一个表示为字符串的数值,没有任何隐含的编码。感谢此处提供的建议,我最终得到了以下适用于我的目的的功能。我 post 把它放在这里以防它对其他人有用。

  def showBytes(bytes: Array[Byte]):String = {
    bytes.map(b => "" + b.toInt).mkString(" ")
  }

此函数将return一个包含由空格分隔的数值的字符串。