Pergunta

Existe um construído em forma de converter um inteiro em Ruby em seu hexadecimal equivalente?

Algo como o oposto do String#to_i :

"0A".to_i(16) #=>10

Como talvez:

"0A".hex #=>10

Eu sei como fazer a minha própria, mas é provavelmente mais eficiente usar um construído em função de Ruby.

Foi útil?

Solução

Você pode dar to_s uma base diferente de 10:

10.to_s(16)  #=> "a"

Outras dicas

Que tal usar % / < a href = "http://ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf" rel = "noreferrer"> sprintf :

i = 20
"%x" % i  #=> "14"

Para resumir:

p 10.to_s(16) #=> "a"
p "%x" % 10 #=> "a"
p "%02X" % 10 #=> "0A"
p sprintf("%02X", 10) #=> "0A"
p "#%02X%02X%02X" % [255, 0, 10] #=> "#FF000A"

Aqui está uma outra abordagem:

sprintf("%02x", 10).upcase

consulte a documentação do sprintf aqui: http: //www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf

Apenas no caso de você ter uma preferência para como os números negativos são formatados:

p "%x" % -1   #=> "..f"
p -1.to_s(16) #=> "-1"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top