Tag: 打包

为什么hex – > base64与base64 – > hex使用pack和unpack有什么不同?

我得到了这段代码,它从hex转换为base64,反之亦然。 我从另一个SO问题得到了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像这样实现to_hex : def to_hex [[self].pack(“m0”)].pack(“H*”) end 或者to_base64使用unpack ? 为什么我们选择的基础完全改变了我们需要用来完成转换的方法?