Ruby:从字节创build一个string

我想从字节值build立一个string。

我目前使用:

str = " " str[0] = byte 

这似乎工作正常,但我觉得它很丑,并不是可扩展的string超过1个字符。

任何想法?

有一个比上述任何更简单的方法: Array#pack :

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

我相信pack是在matz ruby​​中用c实现的,所以用非常大的数组也会快很多。

此外,包可以使用'U *'模板正确处理UTF-8。

对于1.9你需要:

 [195,164].pack('c*').force_encoding('UTF-8') 

不记得是否有一个单一的function,这样做:

 >> a = [65,66,67] => [65, 66, 67] >> a.map {|x| x.chr}.join => "ABC" 

如果字节是一个Fixnum的数组,你可以试试这个:

 bytes.map {|num| num.chr}.join 

或这个:

 s = '' bytes.each {|i| s << i}