gpt4 book ai didi

Python chr() 函数返回错误字符

转载 作者:行者123 更新时间:2023-12-01 01:36:41 26 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序:在 while 循环中,它接受整数(保证在 0, 255 范围内),将其转换为相应的字符并将该字符写入文件,直到输入整数为 -1。我用 C++ 写的,效果很好。代码是:

#include <iostream>
#include <fstream>
using namespace std;

int main(){
char c;
int p;

ofstream myfile;
myfile.open ("a.txt");

while(true){
cin>>p;
if(p == -1)
break;
c = p;

myfile << c;
}

return 0;
}

我也尝试用python 3编写相同的程序,代码是:

import sys

file = open("b.txt", "w")
while True:
p = int(input())
if p == -1:
break
c = chr(p)
file.write(c)

问题是,在某些输入上,它们给出不同的输出,例如在输入上:

0
3
38
58
41
0
194
209
54
240
59
-1

C++ 给出输出:

0003 263a 2900 c2d1 36f0 3b

并且 python 给出输出:

0003 263a 2900 c382 c391 36c3 b03b 

我有测试用例,所以我知道 C++ 的输出是正确的。可能是什么问题?

最佳答案

您的“字符”概念似乎是“字节”。 Python 则不然; Python 3 的“字符”概念是“Unicode 代码点”,如何将其转换为字节取决于编码。

如果要写入字节,则应以二进制模式(C++ 和 Python)打开文件,并且应更改 Python 代码以将 bytes 对象传递给 write:

with open("b.txt", "wb") as file:
while True:
p = int(input())
if p == -1:
break
# file.write(bytearray([p])) for Python 2 compatibility
file.write(bytes([p]))

关于Python chr() 函数返回错误字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com