当前位置:  开发笔记 > 后端 > 正文

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

如何解决《在Ruby中将整数转换为十六进制字符串》经验,为你挑选了4个好方法。

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

与之相反的是String#to_i:

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

或许像:

"0A".hex #=>10

我知道如何自己动手,但使用内置的Ruby函数效率可能更高.



1> Jean..:

你可以给to_s10个以外的基数:

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


这是我正在寻找的答案,但它没有在链接页面上记录str.to_s => str被指定为不接受参数并且具有"返回接收器".作为唯一的文件,但它似乎工作
啊,我在Integer下寻找一个.to_s方法,却找不到一个.我下次也会看看Fixnum
抱歉,复制粘贴错误当然to_s on string不接受参数,但在Fixnum上它确实:)

2> flxkid..:

怎么样使用%/ sprintf:

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


而对于那里的其他红宝石新手:"#%02x%02x%02x"%[255,0,10]#=>"#ff000a"` - 带我一点弄清楚如何发送几个args.
感谢您展示这一点,我需要的东西能让我得到一个前缀为'0'的固定长度字符串.例如:"%02X"%10#=>"0A"
@TomD%是一个String方法,它有效地提供了sprintf格式化的简写(它们进行相同的内部调用).它在String类中有记录,请参阅http://www.ruby-doc.org/core-1.9.3/String.html#method-i-25
减少重复:`[255,0,10] .map {| x | '%02X' %X} .join`

3> Lri..:

总结一下:

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"



4> Ultrasaurus..:

这是另一种方法:

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

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


`sprintf("%02X",10)`因大写X而大写.不需要调用upcase方法.内核的具体部分是:http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-format
推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有