相当于Python中的Ruby pack('H *')

时间:2018-07-26 21:18:14

标签: python ruby pack binascii

我很难弄清楚为什么输出不一样。请注意,如果将两个OUT进行比较,则差异很小。我要实现的目标是在Python中获得与Ruby中相同的输出。

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

1 个答案:

答案 0 :(得分:5)

两种语言都产生相同的字节序列;唯一的区别是它们向您显示这些字节的方式。 Ruby在\e个字节中有一个1b字符串转义序列(ASCII ESC,转义),而Python将该字节显示为\x1b