【发布时间】:2020-06-09 23:18:54
【问题描述】:
这怎么可能?我正在使用python3。
a= b"\xfc\x48\x83\xe4\xf0\xe8"
b= "\xfc\x48\x83\xe4\xf0\xe8"
if (a == b.encode('ascii',errors='replace')):
print ("Winner")
print (a)
b'\xfcH\x83\xe4\xf0\xe8'
print (b)
üHäðè
我尝试了不同类型的错误,但没有。如果我没有输入任何错误,它会弹出一个错误,上面写着codec can't encode character '\xfc' in position 0: ordinal not in range(128)。我已经阅读了the official manual 上的手册,但我找不到任何好的答案。
我想知道如何将 B 转换(强制)为 A。相同的打印,相同的输出。
编辑:我找到了解决方案。我想从十六进制字符串转换为字节。最后我所做的是从字符串中替换“\x”。这会留下带有十六进制字符的字符串。然后我使用了字节函数 bytes.fromhex()。
b = b.replace("\\x", "")
b = bytes.fromhex(b)
【问题讨论】:
-
你到底想在这里做什么?
b.encode("ascii")表示获取 ascii 字符串并将其编码为二进制。但是你的 ascii 字符串是无效的,就像它包含汉字、表情符号等就不是 ascii 一样。 -
要将字节范围(最多 255 个)内的 Unicode 字符转换为字节,请使用编码“latin-1”。
-
我正在尝试将(强制)字符串转换为字节对象而不添加任何内容。我有一个程序将字节对象作为字符串返回。我想声明这个字符串作为字节对象返回,就像我对 A 变量所做的一样(但我做不到)。
标签: python python-3.x encode