Ф-ция перевода строки в HEX.

Тема в разделе "PHP", создана пользователем funman, 4 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    Подскажите пожайлуста ф-цию как можно текстовую строку закодировать в последовательность HEX.

    Знаю как сделать это ява скриптом, а тут желательно средствами php.
     
  2. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    PHP:
    function strToHex($string)
    {
        
    $hex='';
        for (
    $i=0$i strlen($string); $i++)
        {
            
    $hex .= dechex(ord($string[$i]));
        }
        return 
    $hex;
    }
     
    funman нравится это.
  3. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    Как в этом цикле после каждого шестнадцатиричного значения добавить символ разделитель?
    пробовал ;
    PHP:
     $hex .=dechex(ord($string[$i]))+";";
    но так не работает , я так понимаю что после преобразования dechex, тип данных меняется на числовой не совместимый с текстом, как это числовое значение обратно в строку отконвертить?
     
  4. stanbert

    stanbert Прохожие

    В php для соединения (конкатенации) строк используется точка
    PHP:
     $hex .=dechex(ord($string[$i])).";";
    Вот так должно быть.
     
  5. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    ....
    PHP:
    $hex=bin2hex($string);
    не проще?

    а чтобы разделитель был:
    PHP:
    $hex='';
    for(
    $q=0;$q<strlen($string);$q++){
    $hex.=bin2hex($string[$q]).";";
    }
     
    savca нравится это.
  6. savca

    savca Создатель

    Регистр.:
    30 июн 2008
    Сообщения:
    49
    Симпатии:
    5
    а можно скрипт который шифрует весь код?
     
  7. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    так точно не проще, при использовании bin2hex "1" - > "3439"
    Каким образом получаються эти цифры?

    при dechex все норм, получаю шестнадцатиричные коды символа.
     
  8. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Я хз, как у тебя такое получилось, может чего-то лишнего написал? у меня вывел 31
     
  9. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117

    Про sprintf() никто почему то не вспомнил:
    PHP:
    $s "строка";

    $d "";
    for(
    $i=0$i strlen($s); $i++) {
    $d .= sprintf("%2X "ord($s[$i]));
    //                ^ этот пробел - разделитель кодов hex-символов 
    }

    echo 
    $d;
    Скрипт выведет
    F1 F2 F0 EE EA E0
     
Статус темы:
Закрыта.