Преобразования восьмеричных и шестнадцатеричных чисел

Проблема

Требуется преобразовать строку с восьмеричным или шестнадцатеричным представлением (например, "0x55" или "0755") в правильное число.
Perl воспринимает лишь те восьмеричные и шестнадцатеричные числа, которые встречаются в программе в виде литералов. Если числа были получены при чтении из файла или переданы в качестве аргументов командной строки, автоматическое преобразование не выполняется.

Решение

Воспользуйтесь функциями Perl oct и hex:
$number = hex($hexadecimal);         # Шестнадцатеричное число
$number = oct($octal);               # Восьмеричное число

Комментарий

Функция oct преобразует восьмеричные числа как с начальными нулями, так и без них ("0350" и "350"). Более того, она даже преобразует шестнадцатеричные числа, если у них имеется префикс "0х". Функция hex преобразует только шестнадцатеричные числа с префиксом "0х" или без него — например, "0x255", "3A", "ff" или "deadbeef" (допускаются символы верхнего и нижнего регистров).

См. также




2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: