it-swarm.it

Conversione di un numero intero in una stringa esadecimale in Ruby

Esiste un modo integrato per convertire un numero intero in Ruby nel suo equivalente esadecimale?

Qualcosa di simile al contrario di String#to_i :

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

Come forse:

"0A".hex #=>10

So come fare il mio, ma probabilmente è più efficiente usare una funzione Ruby integrata).

202
Matt Haughton

Puoi dare to_s una base diversa da 10:

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

Che ne dici di usare % / sprintf :

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

Riassumere:

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"
70
Lri

Ecco un altro approccio:

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

vedere la documentazione per sprintf qui: http://www.Ruby-doc.org/core/classes/Kernel.html#method-i-sprintf

13
Ultrasaurus

Nel caso abbiate una preferenza per la formattazione dei numeri negativi:

p "%x" % -1   #=> "..f"
p -1.to_s(16) #=> "-1"
3
tool maker