即使在阅读了标准文档之后,我仍然无法理解 Ruby 的具体Array#pack
工作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”。他们每个人都以不同的方式“失败”(并不是真正的失败,因为我可能期待错误的事情)。所以两个问题:
- 这些输出背后的逻辑是什么?
- 怎样才能达到我想要的效果,即将一串十六进制数转换成对应的字符串。更好的是 - 给定一个整数 n,如何将其转换为与文本文件相同的字符串,当被视为数字时(例如,在十六进制编辑器中)等于 n?