我想从字节值构建一个字符串.
我目前使用:
str = " "
str[0] = byte
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我觉得它很难看,并且不能很好地扩展到超过1个字符的字符串.
任何的想法?
Jas*_*ins 59
有一种比上述任何方法更简单的方法:Array#pack:
>> [65,66,67,68,69].pack('c*')
=> "ABCDE"
Run Code Online (Sandbox Code Playgroud)
我相信pack是用matz ruby中的c实现的,所以对于非常大的数组,它也会快得多.
另外,pack可以使用'U*'模板正确处理UTF-8.
gro*_*ser 19
对于1.9你需要:
[195,164].pack('c*').force_encoding('UTF-8')
Run Code Online (Sandbox Code Playgroud)
不记得是否有一个功能可以做到这一点:
>> a = [65,66,67]
=> [65, 66, 67]
>> a.map {|x| x.chr}.join
=> "ABC"
Run Code Online (Sandbox Code Playgroud)