За последние 24 часа нас посетили 16865 программистов и 1631 робот. Сейчас ищут 677 программистов ...

bytes.fromhex() в PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем Fivebam, 18 фев 2020.

Метки:
  1. Fivebam

    Fivebam Новичок

    С нами с:
    18 фев 2020
    Сообщения:
    4
    Симпатии:
    0
    В Python есть функция bytes.fromhex(str). Предположим, что str у нас это
    2cd2d948cfaf4b1097530f7c74fb6737 . В ответ от этой функции мы получим
    b',\xd2\xd9H\xcf\xafK\x10\x97S\x0f|t\xfbg7' .

    Сломал себе всю голову, гуглил часами. Какая функция заменит эту в PHP ?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    hex2bin(), не?
    По ссылке если примеры почитаешь, найдешь и другие способы - через pack()
     
  3. Fivebam

    Fivebam Новичок

    С нами с:
    18 фев 2020
    Сообщения:
    4
    Симпатии:
    0
    тоже склонялся к этому всё время, но именно то, что я хочу получить не могу.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    в чём разница?
     
  5. Fivebam

    Fivebam Новичок

    С нами с:
    18 фев 2020
    Сообщения:
    4
    Симпатии:
    0
    Никогда не работал с байтами и т.д. Я получаю только цифры, без букв, следовательно я получаю не то.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    ты получаешь одни и те же данные, если их анализировать побайтно. "буквы" это просто один из вариантов представления в человекочитаемом виде.
     
  7. Fivebam

    Fivebam Новичок

    С нами с:
    18 фев 2020
    Сообщения:
    4
    Симпатии:
    0
    Понял. Как мне представить эти байты в буквах?
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.106
    Симпатии:
    1.243
    Адрес:
    там-сям
    ну нет в PHP такого вида литералов как b'xyz', но данные то представимы в нужном виде. чуствуешь разницу? выгрузи данные из python и php в файл и сравни DIFF-ом.

    ну это как тебе угодно.
    PHP:
    1. <?php
    2.  
    3. $hexStr = '2cd2d948cfaf4b1097530f7c74fb6737';
    4. $bin = hex2bin($hexStr);
    5.  
    6. echo $bin . "\n";
    7. echo '0x' . bin2hex($bin) . "\n";
    8. echo  base64_encode($bin) . "\n";
    Screenshot 2020-02-19 at 11.54.43.png

    --- Добавлено ---


    см.также
    https://blog-en.openalfa.com/how-to-work-with-binary-data-in-php
     
    Fivebam нравится это.