PHP. Hexadecimal, octal and binary numbers. Hex to string

В php 5.4 появилась возможность определения не только десятичных чисел, но и 16-тиричных, 8-миричных и 2-ых чисел:

$int = 123; // decimal number
$int = -123; // a negative number
$oct = 0123; // octal number (equivalent to 83 decimal)
$hex = 0x1A; // hexadecimal number (equivalent to 26 decimal) 
$bin = 0b11111111; // binary number (equivalent to 255 decimal)

Рассмотрим как можно перевести например из 16-тиричной системы в 10-тичную. Для этого есть несколько способ: либо явно intval($hex), либо неявно strval($hex). Оба способа полезны, для примера использования неявного способа реализуем функцию по получению ascii - символов по их числовому представлению.

function hex2str($hex) {
        $str = "";
        if (is_array($hex)) {
            foreach($hex as $val) {
                // неявный способ
                $str .= chr(strval($val));
            }
        }
        if (is_string($hex)) {
            for ($i=0, $length = strlen($hex); $i < $length; $i += 2) {
                $str .= chr(hexdec(substr($hex, $i, 2)));
            }
        }
        return $str;
}

$hex = "48656C6C6F2C20776F726C64210D0A00";
$hexArray = array(0x48, 0x65, 0x6C, 0x6C, 
                               0x6F, 0x2C, 0x20, 0x77, 
                               0x6F, 0x72, 0x6C, 0x64, 
                               0x21, 0x0D, 0x0A, 0x00);
 
$str1 = hex2str($hex);
$str2 = hex2str($hexArray);

echo $str1; // Hello, world!
echo $str2; // Hello, world!

Кстати, функция echo $hex перед выводом производит неявное преобразование числа в десятичную систему (strval($hex)).