Существует гораздо более простой подход, чем любой из вышеперечисленных: Array # pack :
>> [65,66,67,68,69].pack('c*')
=> "ABCDE"
Я считаю, что pack реализован на языке c в matz ruby, поэтому он также будет значительно быстрее с очень большими массивами.
Также пакет может корректно обрабатывать UTF-8 с помощью шаблона 'U *'.