即使閱讀標準文檔後,我仍然不明白Ruby的Array#pack
和String#unpack
是如何正確工作的。下面是這是造成我最麻煩的例子:我預計這兩種操作返回相同的輸出Ruby的包裝和解壓縮說明
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時?
對於''H''格式,''不期望的方式行事根據文件。其他格式的字符似乎行爲正確,所以我懷疑這是Ruby使用「H *」的錯誤。 –