44

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

4

3 回答 3

90

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

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

Charset如果您未指定任何内容,则将使用默认值。

于 2017-07-21T09:05:48.557 回答
30

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

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> 
于 2017-07-21T09:25:47.733 回答
-2

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

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

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

于 2020-11-21T00:10:25.800 回答