Ruby: ein String von Bytes erstellen
Frage
Ich möchte eine Zeichenfolge aus einem Byte-Wert bauen.
ich zur Zeit verwenden:
str = " "
str[0] = byte
Das scheint gut zu funktionieren, aber ich finde es hässlich und nicht sehr skalierbar Strings länger als 1 Zeichen.
Jede Idee?
Lösung
Es gibt eine viel einfachere Lösung als eine der oben genannten: Array # einpacken :
>> [65,66,67,68,69].pack('c*')
=> "ABCDE"
Ich glaube Pack in c in matz Rubin implementiert wird, so wird es auch wesentlich schneller mit sehr großem Arrays sein.
Auch kann Pack korrekt verarbeitet UTF-8 der 'U *' Vorlage.
Andere Tipps
für 1,9 benötigen Sie:
[195,164].pack('c*').force_encoding('UTF-8')
kann mich nicht erinnern, ob es eine einzige Funktion ist, die das tut:
>> a = [65,66,67]
=> [65, 66, 67]
>> a.map {|x| x.chr}.join
=> "ABC"
Wenn Bytes ist ein Array von Fixnum die Sie dies versuchen könnte:
bytes.map {|num| num.chr}.join
oder folgt aus:
s = ''
bytes.each {|i| s << i}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow