我已经让这段代码正常运行了,它可以将十六进制转换为base64,也可以将base64转换为十六进制。我从Stack Overflow上找到了to_base64
函数,而我写的to_hex
函数则是通过一些猜测和试错得出的。
class String
def to_base64
[[self].pack("H*")].pack("m0")
end
def to_hex
self.unpack("m0").first.unpack("H*").first
end
end
但是我并不是很理解pack
和unpack
方法,尽管已经阅读了文档。具体来说,我对两种实现之间的不对称感到困惑。从概念上讲,在两种情况下,我们都需要将一个以某种基数(16或64)编码的字符串转换为另一种基数。那么为什么我们不能这样实现to_hex
:
def to_hex
[[self].pack("m0")].pack("H*")
end
使用
unpack
或者to_base64
,为什么我们选择的基数会完全改变我们需要使用的转换方法呢?