Scala での String と Array[Byte] の相互変換

Scala で StringArray[Byte] の間を相互に変換する方法です。

文字コードを指定しない場合

Array[Byte] から String に変換する時には String class のコンストラクタを利用します。

val bytes = Array[Byte](0x41, 0x42, 0x43)
new String(bytes)
// "ABC"

String から Array[Byte] を得るには String class の getBytes() メソッドを利用します。

"ABC".getBytes()
// Array[Byte](0x41, 0x42, 0x43)

文字コードを指定する場合

文字コードを指定して Array[Byte] から String に変換する時には String のコンストラクタに文字コードを渡します。

import java.nio.charset.StandardCharsets

val bytes = Array[Byte](0x41, 0x42, 0x43)
new String(bytes, StandardCharsets.UTF_8)

文字コードを指定して String から Array[Byte] を得るには String class の getBytes() メソッドに文字コードを渡します。

import java.nio.charset.StandardCharsets

"----".getBytes(StandardCharsets.UTF_8)

文字コードに Shift_JIS を利用する場合

StandardCharsets には Shift-JIS が含まれませんが、文字セット名 "SJIS" を直接指定して利用することができます。

"----".getBytes("SJIS")

new String(bytes, "SJIS")

参考資料