Hexa в десятичное преобразование в Ruby

У меня есть "\001\022" как значение a. мое желаемое десятичное значение равно 274.

Я попробовал следующую функцию. но я получаю ["0112"]

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

Когда я конвертирую это «0112» в десятичное число с помощью калькулятора, оно дает мне 274. Как я могу получить подобное, используя рубиновые методы.

Спасибо


person Pavunkumar    schedule 08.09.2012    source источник


Ответы (1)


Строка формата в вашем вопросе: «H *» предназначена для «шестнадцатеричной строки (сначала старший полубайт)». Поэтому он декодировал вашу строку как массив 4-битных шестнадцатеричных элементов.

Вам нужен другой формат.

Попробуйте это, которое декодирует его как "16-битное целое число без знака, сетевой (прямой) порядок байтов":

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

Для получения полной информации о том, какие символы можно использовать в строке формата, см. ссылку Документация Ruby для String#unpack.

person ronalchn    schedule 08.09.2012