it-swarm-vi.tech

Chuyển đổi một số nguyên thành một chuỗi thập lục phân trong Ruby

Có cách nào được xây dựng để chuyển đổi một số nguyên trong Ruby thành tương đương thập lục phân của nó không?

Một cái gì đó giống như đối diện với String#to_i :

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

Giống như có lẽ:

_"0A".hex #=>10
_

Tôi biết cách tự cuộn, nhưng có lẽ hiệu quả hơn khi sử dụng hàm Ruby tích hợp.

202
Matt Haughton

Bạn có thể cho to_s một cơ sở khác ngoài 10:

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

Cách sử dụng % / sprintf :

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

Để tóm tắt:

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

Đây là một cách tiếp cận khác:

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

xem tài liệu cho sprintf tại đây: http://www.Ruby-doc.org/core/groupes/Kernel.html#method-i-sprintf

13
Ultrasaurus

Chỉ trong trường hợp bạn có sở thích về cách các số âm được định dạng:

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