Преобразования восьмеричных и шестнадцатеричных чисел
Проблема
Требуется преобразовать строку с восьмеричным или шестнадцатеричным представлением
(например, "0x55" или "0755") в правильное число.
Perl воспринимает лишь те восьмеричные и шестнадцатеричные числа, которые встречаются в
программе в виде литералов. Если числа были получены при чтении из файла или переданы в качестве
аргументов командной строки, автоматическое преобразование не выполняется.
Решение
Воспользуйтесь функциями Perl
oct и
hex:
$number = hex($hexadecimal); # Шестнадцатеричное число
$number = oct($octal); # Восьмеричное число
Комментарий
Функция oct преобразует восьмеричные числа как с начальными нулями, так и без них ("0350" и "350").
Более того, она даже преобразует шестнадцатеричные числа, если у них имеется префикс "0х". Функция
hex преобразует только шестнадцатеричные числа с префиксом "0х" или без него — например, "0x255", "3A", "ff"
или "deadbeef" (допускаются символы верхнего и нижнего регистров).
См. также
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|