tengo una situación en la que necesito convertir un valor binario a hexadecimal en ruby como sigue:
if bin = "0000111" entonces mi salida debe ser: hex = "07"
& supongo que si bin = "010 001 111", entonces O/P debe ser: hex = "08F"
es posible que alguien me ayude a cabo sobre cómo hacer esto .. Gracias de antemano ..Convirtiendo un valor binario a hexadecimal en ruby
Respuesta
¿Qué tal:
>> "0x%02x" % "0000111".to_i(2) #=> "0x07"
>> "0x%02x" % "010001111".to_i(2) #=> "0x8f"
Editar: si no desea que la salida para ser 0x..
pero solo 0..
omita el primer x
en la cadena de formato.
Tanto String#to_i
y Integer#to_s
toma un argumento entero opcional que especifica la base. Por lo que puede convertir la cadena de binario a un entero usando la base 2 y luego convertir ese entero de nuevo a una cadena utilizando la base 16.
hey gracias por tu respuesta. Como dices si uso "11111" .to_i (2) .to_s (16) me da "1f", pero si doy "01111" .to_i (2) .to_s (16) me da solo "f" pero quiero "0f" – sundar
@sundar: Puedes usar 'String #%' (aka 'sprintf') en lugar de' to_s' para formatear el número apropiadamente - usando '% 02x' para formatear el número como un número hexadecimal rellenado a 2 dígitos usando 0s. Sin embargo, esto no funciona si quiere una base distinta de 16 (o 10 si usa 'd' en lugar de' x'), ya que '%' no le permite elegir una base arbitraria. Alternativamente, puede usar 'to_s' seguido de' String # rjust', que funciona con bases arbitrarias y caracteres de relleno. – sepp2k
hola muchas gracias ... – sundar
me gusta esta respuesta mejor:
def bin_to_hex(s)
s.each_byte.map { |b| b.to_s(16) }.join
end
Lo que me pareció aquí:
http://anthonylewis.com/2011/02/09/to-hex-and-back-with-ruby/
ACTUALIZACIÓN
me di cuenta de que no 0s almohadilla correctamente, por lo que se modificó a esto:
def bin_to_hex(s)
s.each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join
end
¡No sé cómo dicen las personas que funciona! Para mí, usando ruby 4.1, da: ''1111'.each_byte.map {| b | b.to_s (16)}. unir => "31313131" '(Y quiero' "f" 'o algo similar.) – Djunzu
@Djunzu Estás hablando de algo diferente. La cadena ''1111'' tiene cuatro bytes, y cada uno tiene un valor de 49 (es decir, el valor ASCII). 49 en decimal es 31 en hex. No tiene un valor "binario" en el sentido de que la pregunta está hablando. Tienes una cadena que contiene caracteres ASCII ''1'' y'' 0''. – Ryan
@Djunzu En realidad, no importa. Me acabo de dar cuenta de que, en realidad, tienes razón, y la respuesta es usar "binario" en el sentido equivocado. – Ryan
- 1. Conversión de un número hexadecimal a binario en ruby
- 2. Convertir hexadecimal a binario en MySQL
- 3. Convirtiendo system.windows.media.brush al código de color hexadecimal
- 4. Convirtiendo cadena larga de binario a hex C#
- 5. Erlang io: formateo de un binario a hexadecimal
- 6. Convirtiendo Ruby en C#
- 7. Convirtiendo un objeto a un hash de valores en Ruby
- 8. ¿Cómo se manipula un valor hexadecimal a nivel de bits?
- 9. Conversión de un resumen hexadecimal a base64 en Ruby
- 10. Incremente un valor hexadecimal (JAVA)
- 11. ¿Cómo se escribe un literal binario en ruby?
- 12. Escribir archivo binario en Ruby
- 13. Ruby: hexadecimal en expresiones regulares
- 14. Decode cadena hexadecimal en Ruby
- 15. transformar una información hexadecimal a binario utilizando comandos de Linux
- 16. Analizando un archivo binario en Ruby
- 17. Cómo editar el valor hexadecimal de un archivo binario usando C#
- 18. Ruby, generar un color hexadecimal aleatorio
- 19. convertir #RRGGBB valor hexadecimal a #AARRGGBB
- 20. Convirtiendo una cadena de inicialización única en un valor de flotación aleatorio, aunque determinista, en Ruby
- 21. Cómo imprimir literales enteros en binario o hexadecimal en haskell?
- 22. Convirtiendo claves hash anidadas de CamelCase a snake_case en Ruby
- 23. Cómo representar un valor hexadecimal 1F?
- 24. Conversión de un entero en una cadena hexadecimal en Ruby
- 25. ¿Debería almacenarse hash de contraseña en número binario o hexadecimal?
- 26. ¿Cómo convertir un doble a hexadecimal?
- 27. iOS convertir el valor hexadecimal
- 28. Convierta un número en el valor hexadecimal en .NET
- 29. XML xs: int valor hexadecimal
- 30. En el diccionario, convirtiendo el valor de cadena a entero
hola muchas gracias .. – sundar
cuando paso en '1' un solo bit binario, esto se convierte en 001. ¿No debería convertirse a '1' en hexadecimal también? – uptownhr
'' ' (" 0% 02x "% binary.to_i (2)) # =>" 001 " – uptownhr