it-swarm-eu.dev

Konvertieren einer Ganzzahl in eine hexadezimale Zeichenfolge in Ruby

Gibt es eine eingebaute Möglichkeit, eine Ganzzahl in Ruby in ihre hexadezimale Entsprechung umzuwandeln?

So etwas wie das Gegenteil von String#to_i :

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

Wie vielleicht:

"0A".hex #=>10

Ich weiß, wie ich meine eigenen würfele, aber es ist wahrscheinlich effizienter, eine eingebaute Ruby Funktion zu verwenden.

202
Matt Haughton

Du kannst Geben to_s eine andere Basis als 10:

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

Wie wäre es mit % / sprintf :

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

Zusammenfassen:

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

Hier ist ein anderer Ansatz:

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

die Dokumentation für sprintf finden Sie hier: http://www.Ruby-doc.org/core/classes/Kernel.html#method-i-sprintf

13
Ultrasaurus

Nur für den Fall, dass Sie bevorzugen, wie negative Zahlen formatiert werden:

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