我有一种情况,我需要在ruby中将二进制值转换为十六进制,如下所示:
如果bin ="0000111"那么我的输出应该是:hex ="07"
并假设如果bin ="010001111"那么o/p应该be:hex ="08f"
有人可以帮我解决这个问题..提前谢谢..
Mic*_*ohl 13
怎么样:
>> "0x%02x" % "0000111".to_i(2) #=> "0x07"
>> "0x%02x" % "010001111".to_i(2) #=> "0x8f"
Run Code Online (Sandbox Code Playgroud)
编辑:如果您不想输出,0x..只是0..省略x格式字符串中的第一个.
def bin_to_hex(s)
s.each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join
end
Run Code Online (Sandbox Code Playgroud)
我在这里找到的(零填充修改):
http://anthonylewis.com/2011/02/09/to-hex-and-back-with-ruby/
两者String#to_i和Integer#to_s一个可选的整数参数指定的基础.因此,您可以使用base 2将二进制字符串转换为整数,然后使用base 16将该整数转换回字符串.