首页 > 解决方案 > 将字节串作为参数传递时出现问题

问题描述

我目前正在尝试以十六进制格式打印字节串的元素,在移动它之后,如下所示:

Python 3.6.10 (default, May 12 2020, 10:44:31) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = '\x40\x11\xb8'
>>> type(x)
<class 'str'>
>>> print(r'\x{:x}'.format(ord(x[2])-11))
\xad
>>> quit()

在解释器中这工作得很好,但是当我尝试将字符串作为参数传递时,它会将最后一个值解释为比字节串更长的东西,可能是 utf-8:

cat test.py 
#!/usr/bin/env python
import sys
print(type(sys.argv[1]))
print(r'\x{:x}'.format(ord(sys.argv[1][2])-11))

./test.py $'\x40\x11\xb8'
<class 'str'>
\xdcad

所以问题是:有没有办法防止这种情况发生?

我也尝试将 sys.argv[1] 映射到一个字节数组,但由于它超过了 sys.argv[1][2] 中的 255 个限制,所以它不起作用。

标签: python

解决方案


推荐阅读