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}