python - 将字节串作为参数传递时出现问题
问题描述
我目前正在尝试以十六进制格式打印字节串的元素,在移动它之后,如下所示:
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 个限制,所以它不起作用。
解决方案
推荐阅读
- java - 从axis升级到axis2以向SOAP请求添加安全标头
- google-drive-api - 使用 API 密钥通过 REST 列出文件给出 403
- android - 如何在 Katalon Studio 中循环测试用例?
- web-applications - 如何从 Java 客户端应用程序获取 WebSphere 中应用程序的状态?
- javascript - 根据Vue.js中的特定项目值获取列表中的最后一个值
- group-by - Pyspark:如何计算单个 groupBy 中的 avg 和 count?
- r - d3 所有分支在彼此垂直树状图的顶部。r2d3 闪亮
- node.js - Sequelize:如何将字段定义为函数?
- javascript - Redux 字段中输入的首字母大写
- julia - 迭代 Julia 的动态多项式中的项