Ruby:从字节创build一个string

我想从字节值build立一个string

我目前使用:

str = " " str[0] = byte 

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

任何想法?

4 Solutions collect form web for “Ruby:从字节创build一个string”

有一个比上述任何更简单的方法: 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} 
  • 如果太长,我怎样才能用“...”来截断我的string?
  • 在C循环中使用strtok()?
  • 如何在JavaScript中每n个字符之后插入一个字符?
  • 大多数pythonic方式交错两个string
  • String.Join忽略空string的方法?
  • 为什么“string”被认为是“string”的简化版本?
  • 在定义macros的Pragma
  • java中的stringreplace,类似于速度模板
  • 如何使String.Contains不区分大小写?
  • 为什么Python 3.5中的str.translate比Python 3.4更快?
  • string插值与String.Format