Эквивалент Ruby pack ('H *') в Python

1

Мне сложно понять, почему выходы не совпадают. Обратите внимание, что разница очень мала, если вы сравниваете оба OUT. То, что я пытаюсь достичь, имеет тот же результат в Python, что и в Ruby.

Рубин:

IN:['034151a3ec46b5670a682b0a63394f863587d1bc97483b1b6c70eb58e7f0aed192'].pack('H*')

OUT:\x03AQ\xA3\xECF\xB5g\nh+\nc9O\x865\x87\xD1\xBC\x97H;\elp\xEBX\xE7\xF0\xAE\xD1\x92

Python:

IN:unhexlify('034151a3ec46b5670a682b0a63394f863587d1bc97483b1b6c70eb58e7f0aed192') OUT:\x03AQ\xa3\xecF\xb5g\nh+\nc9O\x865\x87\xd1\xbc\x97H;\x1blp\xebX\xe7\xf0\xae\xd1\x92

Теги:
pack

1 ответ

5
Лучший ответ

Оба языка произвели одну и ту же последовательность байтов; единственное различие заключается в том, как они отображают эти байты для вас. Рубин имеет \e последовательность строк ускользания для 1b байт (ASCII ESC, побег), в то время как Python показывает, что байты как \x1b.

  • 0
    Ах, Интересно, не осознавал этого. Спасибо за объяснение, я действительно ценю это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню