Рубиновый эквивалент .NET Encoding.ASCII.GetString (byte []) - PullRequest
0 голосов
/ 03 июня 2010

Имеет ли Ruby эквивалент. Encoding.ASCII.GetString (byte []) .NET ?

Encoding.ASCII.GetString (bytes []) принимает массив байтов и возвращает строку после декодирования байтов с использованием кодировки ASCII.

1 Ответ

1 голос
/ 03 июня 2010

Предполагая, что ваши данные находятся в массиве примерно так (каждый элемент является байтом, и далее, из опубликованного вами описания, не более 127 по значению, то есть 7-битный символ ASCII):

array =[104, 101, 108, 108, 111]

string = array.pack("c*") 

После этого строка будет содержать «привет», что, как я полагаю, вы запрашиваете.

Метод pack "Упаковывает содержимое arr в двоичную последовательность в соответствии с директивами в данной строке шаблона".

"c *" просит метод интерпретировать каждый элемент массива как "char". Используйте "C *", если вы хотите интерпретировать их как без знака символов.

http://ruby -doc.org / ядро ​​/ классов / 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's Iconv здесь .

Возможно, вы также захотите проверить этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...