在Python中删除字符串中的\x

2024-10-01 17:30:26 发布

您现在位置:Python中文网/ 问答频道 /正文


我需要通过python得到小端随机字符串。
例如'0010'为256(不带'\x')
这是我的密码。在

 import random
 import struct
 str1 = struct.pack('<Q', random.randint(1, 1000))
 #Ex: str1 = '\xc9\x02\x00\x00\x00\x00\x00\x00'

但我不知道把这个字符串转换成“c9020000000000000” 请给点建议,谢谢


Tags: 字符串import密码random建议structpackex
3条回答

作为@msvalkon解决方案的替代方案,您可以使用binascii包,它的作用相同,但更优雅:

>>> import random
>>> import struct
>>> str1 = struct.pack('<Q', random.randint(1, 1000))
>>> import binascii
>>> binascii.hexlify(str1)
'c902000000000000'
>>> binascii.hexlify(str1).upper()
'C902000000000000'

struct.pack()返回格式字符指定的字节。如果需要字节的十六进制表示,则需要对它们进行转换。可以使用字符串格式:

>>> import random
>>> import struct
>>> str1 = struct.pack('<Q', random.randint(1, 1000))
>>> "".join("{:02X}".format(ord(x)) for x in str1)
'C902000000000000'

请记住,在python中,十六进制只是字符串,这阻止了任何有意义的操作。可以使用ord()将它们转换为整数:

^{pr2}$

另一种非常容易输入的替代方法是以下方法:

>>> import random
>>> import struct
>>> str1 = struct.pack('<Q', random.randint(1, 1000))
>>> str1.encode('hex')

相关问题 更多 >

    热门问题