I would like to build a string from a byte value.
I currently use:
str = \" \"
str[0] = byte
This seems to work fine but I find it
for 1.9 you need:
[195,164].pack('c*').force_encoding('UTF-8')
There is a much simpler approach than any of the above: Array#pack:
>> [65,66,67,68,69].pack('c*')
=> "ABCDE"
I believe pack is implemented in c in matz ruby, so it also will be considerably faster with very large arrays.
Also, pack can correctly handle UTF-8 using the 'U*' template.
If bytes is an array of Fixnum's you could try this:
bytes.map {|num| num.chr}.join
or this:
s = ''
bytes.each {|i| s << i}
can't remember if there is a single function that does that:
>> a = [65,66,67]
=> [65, 66, 67]
>> a.map {|x| x.chr}.join
=> "ABC"
This isn't the OP's question, but if you have just a single byte (not in an array) and want to make a string out of it, use chr
c = 65
=> 65
c.chr
=> "A"
c.chr.class
=> String