2011-05-12 20 views
9

Estoy tratando de convertir un valor hexadecimal en un valor binario (cada bit en la cadena hexadecimal debe tener un valor binario equivalente de cuatro bits). Me aconsejaron que usar esto:Conversión de un número hexadecimal a binario en ruby ​​

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

Esto me da la salida correcta 000011111111. Estoy confundido con cómo funciona esto, especialmente %0#{num.size*4}b. ¿Podría alguien ayudarme con esto?

Respuesta

9

También puede hacer:

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

Es posible que tenga ya resuelto, pero, num.size*4 es el número de dígitos que desea rellenar la salida hasta con 0 porque un dígito hexadecimal está representado por cuatro (log_2 1 6 = 4) dígitos binarios.

+4

O, más en general, 'num.to_i (16) .to_s (2)' – Phrogz

Cuestiones relacionadas