将字节数组转换为字符串

时间:2017-07-21 08:56:27

标签: arrays string scala encoding bytestream

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

3 个答案:

答案 0 :(得分:32)

如果你知道它的字符集,

总是可以将字节数组转换为字符串
val str = new String(bytes, StandardCharsets.UTF_8)

如果您未指定任何内容,则会使用默认的Charset

答案 1 :(得分:17)

您可以将字节数组转换为char数组,然后从该

构造一个字符串
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> 

答案 2 :(得分:0)

我要查找的字节到字符串函数是每个字节只是一个表示为字符串的数字值,没有任何隐式编码。多亏了这里提供的建议,我最终得到了可以用于我的目的的以下功能。如果对其他人有用,我会在这里发布。

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

此函数将返回一个字符串,其中包含用空格分隔的数字值。