Конвертировать (двухбайтовую) строку в шестнадцатеричный - PullRequest
4 голосов
/ 10 августа 2011

Допустим, у меня есть слово "русский", написанное кириллицей.Это будет эквивалентно следующему в шестнадцатеричном формате:

Русский

Мой вопрос: как мне написать функцию, которая перейдет с "русского" в кириллице на шестнадцатеричное значение, как указано выше?Может ли эта функция работать и для однобайтовых символов?

Ответы [ 2 ]

5 голосов
/ 10 августа 2011

〹 штуки называются сущностями HTML. В PHP есть функция, которая может создавать их: mb_encode_numericentity Документы , это часть расширения Multibyte String ( Демо ):

$cyrillic = 'русский';

$encoding = 'UTF-8';
$convmap = array(0, 0xffff, 0, 0xffff);
$encoded = mb_encode_numericentity($cyrillic, $convmap, $encoding);

echo $encoded; # русский

Однако: вам необходимо знать кодировку вашей кириллической строки. В этом случае я выбрал UTF-8, в зависимости от него вам нужно изменить параметр $encoding функции и массив $convmap.

2 голосов
/ 10 августа 2011

Ваш пример не является шестнадцатеричным, но если вы хотите преобразовать в шестнадцатеричный, попробуйте это:

function strToHex($string)
{
    $hex='';
    for ($i=0; $i < strlen($string); $i++)
    {
        $hex .= dechex(ord($string[$i]));
    }
    return $hex;
}

function hexToStr($hex)
{
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2)
    {
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

echo strToHex('русский'); // d180d183d181d181d0bad0b8d0b9
...