Array#pack
標準のドキュメントを読んでも、Ruby のとString#unpack
が正確にどのように機能するのかまだ理解できません。これが私に最も問題を引き起こしている例です:
irb(main):001:0> chars = ["61","62","63"]
=> ["61", "62", "63"]
irb(main):002:0> chars.pack("H*")
=> "a"
irb(main):003:0> chars.pack("HHH")
=> "```"
これらの操作はどちらも同じ出力「abc」を返すと予想していました。それらのそれぞれは、異なる方法で「失敗」します(おそらく間違ったことを期待しているので、実際には失敗ではありません)。2つの質問:
- これらの出力の背後にあるロジックは何ですか?
- 16 進数のシーケンスを対応する文字列に変換するなど、必要な効果を得るにはどうすればよいですか。さらに良いことに、整数 n が与えられた場合、それをテキスト ファイルと同じ文字列に変換する方法を教えてください。