在Ruby中将Base64字符串转换为整数

5

我想要将像“AAAAAAAAABI=”这样的Base64值转换为相应的整数。 我尝试使用Base64.decode64,但它并没有明显地说明它将如何成为解决方案的一部分。

irb > require 'base64'
 => true 
irb > Base64.decode64('AAAAAAAAABI=')
 => "\x00\x00\x00\x00\x00\x00\x00\x12" 

嘿!它将第一个'A'转换为其二进制等效形式(以十六进制12显示)并将其存储在64位int的低位八位字节中。您可能会发现,在第一个int之后还存储了12个(十进制)64位int。如果您没有看到它们,您能否以某种方式使其发生?这将使您更好地了解正在发生的事情。 - Pete Wilson
1个回答

4
这应该是您想要的内容。如果不是,请查看String#unpack获取更多关于它能做什么的信息。
require 'base64'
i = Base64.decode64('AAAAAAAAABI=')
i.unpack('q*').first
# => 1297036692682702848 

5
如果你打算使用unpack,那么你可以摆脱base64库并完全使用unpack;实际上,Base64.decode64被实现为unpack("m").first,因此你的代码等价于'AAAAAAAAABI='.unpack('m').first.unpack('q*').first - sawa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接