die Zeichenfolge als Hexadezimalzahlen interpretiert, zwei Zeichen pro Byte, und wandelt sie in eine Zeichenfolge mit den Zeichen mit dem entsprechenden ASCII-Code:
["464F4F"].pack('H*') # => "FOO", 0x46 is the code for 'F', 0x4F the code for 'O'
Für die entgegengesetzte Umwandlung verwenden unpack
:
'FOO'.unpack('H*') # => ["464f4f"]
Es ist ein bisschen schwieriger für nicht-ASCII-8BIT Codierungen:
"á".encoding # => #<Encoding:UTF-8>
"á".unpack('H*') # => ["c3a1"]
['c3a1'].pack('H*') # => "\xC3\xA1"
['c3a1'].pack('H*').encoding # => #<Encoding:ASCII-8BIT>
['c3a1'].pack('H*').force_encoding('UTF-8') # => "á"
.pack ('H') packt den Inhalt eines Arrays in die Hex-Zeichenkette. – daustin777
Die ['pack'] (http://www.ruby-doc.org/core-2.0/Array.html#method-i-pack) und [' unpack'] (http://ruby-doc.org /core-2.0/String.html#method-i-unpack) Methoden sind gut dokumentiert. –
Ich habe mir das Dokument angeschaut, aber "hex string (high nibble first)" bedeutete mir nicht viel. – user2398029