2011-04-07 83 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