我試圖將十六進制值轉換爲二進制值(十六進制字符串中的每一位都應該有一個等效的四位二進制值)。我被建議使用這個:在紅寶石中將十六進制數字轉換爲二進制
num = "0ff" # (say for eg.)
bin = "%0#{num.size*4}b" % num.hex.to_i
這給了我正確的輸出000011111111
。我很困惑這是如何工作的,尤其是%0#{num.size*4}b
。有人可以幫助我嗎?
我試圖將十六進制值轉換爲二進制值(十六進制字符串中的每一位都應該有一個等效的四位二進制值)。我被建議使用這個:在紅寶石中將十六進制數字轉換爲二進制
num = "0ff" # (say for eg.)
bin = "%0#{num.size*4}b" % num.hex.to_i
這給了我正確的輸出000011111111
。我很困惑這是如何工作的,尤其是%0#{num.size*4}b
。有人可以幫助我嗎?
你也可以這樣做:
num = "0ff"
num.hex.to_s(2).rjust(num.size*4, '0')
你可能有已經計算出來了,但是,num.size*4
是您想要用0
填充輸出的位數,因爲一個十六進制數字由四位表示(log_2 1 6 = 4)二進制數字。
或者更一般地說,'num.to_i(16).to_s(2)' – Phrogz 2011-05-12 17:54:36