2011-04-07 51 views
4

我想将Base64值(例如“AAAAAAAAABI =”)转换为其对应的整数。我用Base64.decode64开始讨论它,但它不是解决方案的一部分。将Base64字符串转换为Ruby中的整数

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

嘿!它将第一个'A'转换成它的二进制等值(显示为十六进制12),并将其存储在64位int的低位八位字节中。您可能会发现在第一个之后存储了12位(十进制)更多的64位整数。如果你没有看到它们,你能否以某种方式实现这一点?这会让你更好地了解正在发生的事情。 – 2011-04-07 18:23:38

回答

3

这应该是你在追求什么。如果没有,请查看String#unpack了解更多信息。

require 'base64' 
i = Base64.decode64('AAAAAAAAABI=') 
i.unpack('q*').first 
# => 1297036692682702848 
+4

如果您打算使用'unpack',那么您可以摆脱base64库并完全使用'unpack'完成;实际上,'Base64.decode64'被实现为'unpack(“m”)。first',所以你的代码等同于''AAAAAAAAABI ='。unpack('m')。first.unpack('q *')。 first'。 – sawa 2011-04-08 02:49:30