0

我有 "\001\022" 一个值。我想要的十进制值是 274。

我尝试了以下功能。但我得到 ["0112"]

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

当我使用计算器将此“0112”转换为十进制时,它给了我 274。我怎样才能使用 ruby​​ 方法得到这样的结果。

谢谢

4

1 回答 1

1

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

你需要不同的格式。

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

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

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

于 2012-09-08T06:50:08.460 回答