2011-05-12 37 views
9

我試圖將十六進制值轉換爲二進制值(十六進制字符串中的每一位都應該有一個等效的四位二進制值)。我被建議使用這個:在紅寶石中將十六進制數字轉換爲二進制

num = "0ff" # (say for eg.) 
bin = "%0#{num.size*4}b" % num.hex.to_i 

這給了我正確的輸出000011111111。我很困惑這是如何工作的,尤其是%0#{num.size*4}b。有人可以幫助我嗎?

回答

9

你也可以這樣做:

num = "0ff" 
num.hex.to_s(2).rjust(num.size*4, '0') 

你可能有已經計算出來了,但是,num.size*4是您想要用0填充輸出的位數,因爲一個十六進制數字由四位表示(log_2 1 6 = 4)二進制數字。

+4

或者更一般地說,'num.to_i(16).to_s(2)' – Phrogz 2011-05-12 17:54:36

相關問題