Ruby: создать строку из байтов Я хотел бы построить строку из байтового значения. В настоящее время я использую: str = " " str[0] = byte Кажется, что это нормально, но я считаю его уродливым и не очень масштабируемым для строк длиной более 1 символа. Любая идея? Ответ 1 Существует гораздо более простой подход, чем любой из перечисленных выше: Array # pack: >> [65,66,67,68,69].pack('c*') => "ABCDE" Я считаю, что пакет реализован в c в matz ruby, поэтому он также будет значительно быстрее с очень большими массивами. Кроме того, пакет может корректно обрабатывать UTF-8 с использованием шаблона 'U *'. Ответ 2 для 1.9 вам нужно: [195,164].pack('c*').force_encoding('UTF-8') Ответ 3 не помнит, есть ли одна функция, которая делает это: >> a = [65,66,67] => [65, 66, 67] >> a.map {|x| x.chr}.join => "ABC" Ответ 4 Если байты представляют собой массив Fixnum, вы можете попробовать следующее: bytes.map {|num| num.chr}.join или это: s = '' bytes.each {|i| s << i}
Ответ 1 Существует гораздо более простой подход, чем любой из перечисленных выше: Array # pack: >> [65,66,67,68,69].pack('c*') => "ABCDE" Я считаю, что пакет реализован в c в matz ruby, поэтому он также будет значительно быстрее с очень большими массивами. Кроме того, пакет может корректно обрабатывать UTF-8 с использованием шаблона 'U *'.
Ответ 3 не помнит, есть ли одна функция, которая делает это: >> a = [65,66,67] => [65, 66, 67] >> a.map {|x| x.chr}.join => "ABC"
Ответ 4 Если байты представляют собой массив Fixnum, вы можете попробовать следующее: bytes.map {|num| num.chr}.join или это: s = '' bytes.each {|i| s << i}