Ruby中的十六进制到十进制转换

时间:2012-09-08 06:47:43

标签: ruby unpack hex

我有"\001\022"作为a的值。我想要的十进制值是274.

我试过以下功能。但我得到[“0112”]

a.unpack("H*")  ==>  ["0112"]  

当我使用计算器将这个“0112”转换为十进制时,它给了我274.我怎么能得到像 这使用ruby方法。

谢谢

1 个答案:

答案 0 :(得分:1)

您问题中的格式字符串:“H *”,用于“十六进制字符串(高半字节优先)”。因此,它将您的字符串解码为4位十六进制元素的数组。

您需要不同的格式。

试试这个,将其解码为“16位无符号,网络(大端)字节顺序”整数:

a.unpack("n") # => [274]

有关您可以在格式字符串中使用哪些字符的完整详细信息,请查看Ruby Documentation for String#unpack