格式化十六进制数字以表示字符编码\x

-1 投票
2 回答
4554 浏览
提问于 2025-04-18 17:19

我刚接触Python中的\x00字符串格式化,想知道有没有简单好用的方法来实现类似下面的功能?我希望能在我的Python字符串中动态地插入\x格式。

# Is there a way get a similar effect to this?

s = "commandstring \x{}\x{}".format('00', '00')
s = "commandstring \x%s\x%s" % ('00', '00')

我的一些字符串会是普通的文字和数字,但我也需要插入十六进制的值。

2 个回答

1

我觉得你想要的是 %x 这个占位符。试试下面的代码:

s = "commandstring \x%x\x%x" % (50, 95)

这样做会给你返回

s = "commandstring \x32\x5f"

不过,你需要传入整数才能让它正常工作。

2

\x00 代表的是 一个字节。你可以直接生成这些单字节:

>>> "commandstring {}{}".format('\x00', '\x00')
'commandstring \x00\x00'

或者使用 chr() 函数,通过给定一个整数来生成这个字节:

>>> "commandstring {}{}".format(chr(0), chr(0))
'commandstring \x00\x00'

\xhh 这种写法只能在字符串中使用。你可以构造这种写法,然后让 Python 用 eval()ast.literal_evalraw_string 编解码来解释它,但通常情况下,这并不是你最开始需要的。

撰写回答