在Ruby中将十六进制转换为十进制

14

我有一些十六进制数字,想要将它们转换成十进制数字。例如,01 -> 1,09 -> 9,12 -> 18。

我尝试了:

01.unpack("n")

但那失败了。

"01".unpack("n") # => [12337]

那不是我想要的。

你知道正确的答案吗?


1
无论是十六进制还是十进制,数字就是数字。它们之间没有区别。你的意思是你有用十六进制表示的数字字符串吗? - sawa
1个回答

33

String#to_i 接受一个额外的参数,用于指定数字的进制。十六进制是基数为16的,因此以下代码适用于您:

"01".to_i(16)

如果该数字带有前缀0x,则调用Integer函数也可以使用:

Integer("0x01")

3
重要区别:"g".to_i(16)的结果为0,而Integer("g",16)会抛出一个ArgumentError错误。 - Max
谢谢,完美的解决方案。 - user2909180
1
@user2909180 没问题。请点击旁边的绿色勾号接受此答案,以使问题显示为已解决。 - Aaron Christiansen
@user2909180 你应该“接受”这个答案。 - Arnaud Meuret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接