Ruby是否具有.NET的 Encoding.ASCII.GetString(byte [])?
Encoding.ASCII.GetString(bytes [])获取一个字节数组,并在使用ASCII编码解码字节后返回一个字符串。
答案 0 :(得分:1)
假设您的数据是这样的数组(每个元素都是一个字节,而且,根据您发布的描述,值不大于127,即7位ASCII字符):
array =[104, 101, 108, 108, 111]
string = array.pack("c*")
在此之后,字符串将包含“hello”,这是我认为你要求的。
pack方法“根据给定模板字符串中的指令将arr的内容打包成二进制序列”。
“c *”要求该方法将数组的每个元素解释为“char”。如果要将它们解释为 unsigned 字符,请使用“C *”。
http://ruby-doc.org/core/classes/Array.html#M002222
文档页面中给出的示例使用该函数转换Unicode字符的字符串。在Ruby中我相信这最好用Iconv完成:
require "iconv"
require "pp"
#Ruby representation of unicode characters is different
unicodeString = "This unicode string contains two characters " +
"with codes outside the ASCII code range, " +
"Pi (\342\x03\xa0) and Sigma (\342\x03\xa3).";
#printing original string
puts unicodeString
i = Iconv.new("ASCII//IGNORE","UTF-8")
#Printing converted string, unicode characters stripped
puts i.iconv(unicodeString)
bytes = i.iconv(unicodeString).unpack("c*")
#printing array of bytes of converted string
pp bytes
阅读Ruby的Iconv here。
您可能还想查看this question。