我试图将十六进制值转换为二进制值(十六进制字符串中的每个位应具有等效的四位二进制值).我被建议用这个:
num = "0ff" # (say for eg.)
bin = "%0#{num.size*4}b" % num.hex.to_i
Run Code Online (Sandbox Code Playgroud)
这给了我正确的输出000011111111.我很困惑这是如何工作的,特别是%0#{num.size*4}b.有人可以帮我吗?
saw*_*awa 11
你也可以这样做:
num = "0ff"
num.hex.to_s(2).rjust(num.size*4, '0')
Run Code Online (Sandbox Code Playgroud)
您可能已经想通了,但是,num.size*4您想要将输出填充到的0位数是因为一个十六进制数字由四个(log_2 16 = 4)二进制数字表示.