我试图将十六进制值转换为二进制值(十六进制字符串中的每一位都应该有一个等效的四位二进制值)。我被建议使用这个:在红宝石中将十六进制数字转换为二进制
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