Ruby相当于.NET的Encoding.ASCII.GetString(byte [])

时间:2010-06-03 15:15:56

标签: c# ruby

Ruby是否具有.NET的 Encoding.ASCII.GetString(byte [])

Encoding.ASCII.GetString(bytes [])获取一个字节数组,并在使用ASCII编码解码字节后返回一个字符串。

1 个答案:

答案 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