在 Ruby 中将整数转换为十六进制字符串

发布于 2024-07-06 04:24:08 字数 344 浏览 11 评论 0原文

是否有内置方法可以将 Ruby 中的整数转换为其十六进制等效值?

类似于 String#to_i

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

也许是这样:

"0A".hex #=>10

我知道如何自己开发,但使用内置的 Ruby 函数可能更有效。

Is there a built in way to convert an integer in Ruby into its hexadecimal equivalent?

Something like the opposite of String#to_i:

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

Like perhaps:

"0A".hex #=>10

I know how to roll my own, but it's probably more efficient to use a built in Ruby function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

话少心凉 2024-07-13 04:24:08

您可以提供 to_s 10 以外的基数:

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

请注意,在 ruby​​ 2.4 中,FixNumBigNum 统一在 Integer 类中。
如果您使用的是较旧的 ruby​​,请检查 FixNum# 的文档to_sBigNum#to_s

You can give to_s a base other than 10:

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

Note that in ruby 2.4 FixNum and BigNum were unified in the Integer class.
If you are using an older ruby check the documentation of FixNum#to_s and BigNum#to_s

み青杉依旧 2024-07-13 04:24:08

如何使用 %/sprintf

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

How about using %/sprintf:

i = 20
"%x" % i  #=> "14"
多情出卖 2024-07-13 04:24:08

这是另一种方法:

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

请参阅此处的 sprintf 文档:http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf

Here's another approach:

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

see the documentation for sprintf here: http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf

烂柯人 2024-07-13 04:24:08

总结一下:

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"

To summarize:

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"
卷耳 2024-07-13 04:24:08

以防万一您对负数的格式有偏好:

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

Just in case you have a preference for how negative numbers are formatted:

p "%x" % -1   #=> "..f"
p -1.to_s(16) #=> "-1"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文