【发布时间】:2023-04-01 03:03:01
【问题描述】:
我有 "\001\022" 作为 a 的值。我想要的十进制值是 274。
我尝试了以下功能。但我得到 ["0112"]
a.unpack("H*") ==> ["0112"]
当我使用计算器将这个“0112”转换为十进制时,它给了我 274。我怎么能像 这使用 ruby 方法。
谢谢
【问题讨论】:
我有 "\001\022" 作为 a 的值。我想要的十进制值是 274。
我尝试了以下功能。但我得到 ["0112"]
a.unpack("H*") ==> ["0112"]
当我使用计算器将这个“0112”转换为十进制时,它给了我 274。我怎么能像 这使用 ruby 方法。
谢谢
【问题讨论】:
您问题中的格式字符串:“H*”,用于“十六进制字符串(高半字节优先)”。因此,它将您的字符串解码为 4 位十六进制元素的数组。
您需要不同的格式。
试试这个,它将它解码为“16 位无符号网络(大端)字节顺序”整数:
a.unpack("n") # => [274]
有关可以在格式字符串中使用的字符的完整详细信息,请查看Ruby Documentation for String#unpack。
【讨论】: