Techioz Blog

Ruby: バイトから文字列を作成する

概要

バイト値から文字列を構築したいと考えています。

現在使用しているもの:

str = " "
str[0] = byte

これはうまく機能するように見えますが、醜いし、1 文字を超える文字列にあまり拡張性がないと思います。

何か案が?

解決策

上記の方法よりもはるかに単純なアプローチがあります: Array#pack:

>> [65,66,67,68,69].pack('c*')
=>  "ABCDE"

matz Ruby ではパックは c で実装されていると思います。そのため、非常に大きな配列でもかなり高速になるでしょう。

また、pack は「U*」テンプレートを使用して UTF-8 を正しく処理できます。