Разработчику. Сборник рецептов PHP
Задавайте вопросы

Преобразование из одной системы счисления в другую

Вернуться назад

Задача

Необходимо преобразовать число из одной системы счисления в другую.

Решение

Обратитесь к функции base_convert():

$hex = 'a1';          // шестнадцатеричное число (основание 16)

// преобразование из основания 16 в основание 10
$decimal = base_convert($hex, 16, 10); // переменная $decimal теперь равна 161

Обсуждение

Функция base_convert() изменяет строку в одной системе в соответствующую строку в другой системе. Она работает для всех систем с основаниями от 2 до 36 включительно. Для изображения чисел в системах с основанием больше 10 в качестве дополнительных символов используются буквы от a до z. Первый аргумент – это число, которое нужно преобразовать, за ним следует основание его системы, а в конце – основание ситемы, в которую требуется преобразовать число.

Существует несколько специальных функций для прямого и обратного преобразования чисел в десятичную систему из других наиболее востребованных систем с основаниями 2, 8 и 16. Это функции bindec() и decbin(), octdec() и decoct(),hexdec() и dechex():

// преобразование в десятичную систему
print bindec(11011);          // 27
print octdec(33);          // 27
print hexdec('1b');          // 27

// преобразование из десятичной системы
print decbin(27);          // 11011
print decoct(27);          // 33
print dechex(27);          // 1b

Есть и другой вариант – можно обратиться к функции sprintf(), позволяющей преобразовывать десятичные числа в двоичные, восьмеричные и шестнадцатеричные и предоставляющей широкие возможности форматирования, например с нулями в начале числа и возможностью выбора между верхним и нижним регистром при отображении шестнадцатеричных чисел.

Пусть требуется вывести на печать значения цветов HTML:

printf('#%02X%02X%02X', 0, 102, 204);          // #0066CC

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ