【发布时间】:2017-10-17 15:26:25
【问题描述】:
我有一个字符串a = "hello"。我可以使用 unpack 将其转换为 base 2 或 base 16:
a.unpack('B*')
# => ["0110100001100101011011000110110001101111"]
a.unpack('H*')
# => ["68656c6c6f"]
要转换为base 64,我尝试了pack:
[a].pack('m0')
# => "aGVsbG8="
但结果不是我所期望的。我想如果我有一些二进制表示或字符串,要分部分表示它,我应该使用unpack。但事实证明并非如此。请帮助我理解它。
【问题讨论】:
-
这是base64的样子;它使用 6 位字符来编码 8 位流(基本上每 3 个字节 4 个字符)。你期待什么?
-
Sawa 错误地编辑了我的问题。我的期望不是结果,期望是为什么我们使用 pack 转换为 base64 并使用 unpack 为 base16 和 base2