我还没有找到解决这个问题的方法:
脚本从用户输入接收一个字符串,例如:
"ABCD.00.00"
.表示十六进制字符,脚本应输出以下字符串:
"ABCD\x00\x00"
我尝试了以下方法:
cmd = "ABCD.00.00"
if "." in cmd:
splitted = cmd.split(".")
cmd = splitted[0]
i = 1
while i < len(splitted):
cmd = cmd+"\\x"+splitted[i]
i = i + 1
return(cmd)
但是返回的字符串有两个反斜杠,因此无法识别十六进制字符:
"ABCD\\x00\\x00"
有人有解决这个问题的线索吗? 非常感谢提前
最佳答案
发生这种情况是因为 unicode 字符串不能按照文档直接附加到字符串(utf-8)。
编码不必处理所有可能的 Unicode 字符,大多数编码也不需要。例如,将 Unicode 字符串转换为 ASCII 编码的规则很简单;对于每个代码点:
如果代码点<128,则每个字节与代码点的值相同。 如果代码点为 128 或更大,则无法用此编码表示 Unicode 字符串。 (在这种情况下,Python 会引发 UnicodeEncodeError 异常。)
如果您要打印函数的输出,它将为您提供所需的输出
>>> a="ABCD\\x00\\x00"
>>> print(a)
ABCD\x00\x00
关于python - 将字符串中的十六进制字符附加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54782058/