source

루비에서 정수를 16진수 문자열로 변환

manysource 2023. 7. 4. 22:00

루비에서 정수를 16진수 문자열로 변환

루비의 정수를 16진수에 해당하는 것으로 변환하는 내장된 방법이 있습니까?

다음과 같은 것과 반대되는 것:

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

예를 들어:

"0A".hex #=>10

나는 나만의 롤을 할 줄 알지만, 아마도 내장된 루비 기능을 사용하는 것이 더 효율적일 것입니다.

10이 아닌 기준을 지정할 수 있습니다.

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

루비 2.4에서는FixNum그리고.BigNum에서 통일되었습니다.Integerclass. 오래된 루비를 사용하는 경우 FixNum#to_s 및 BigNum#to_s의 문서를 확인합니다.

/:sprintf를 사용하는 것은 어떻습니까?

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

요약:

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"

다음은 또 다른 접근 방식입니다.

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

의 설명서를 참조sprintf여기: http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf

음수 형식을 선호하는 경우:

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

언급URL : https://stackoverflow.com/questions/84421/converting-an-integer-to-a-hexadecimal-string-in-ruby