编写和读取无符号字符到二进制文件

And*_*v93 5 c c++ file-io fwrite fread

我正在编写一个简单的程序,写入二进制文件,关闭它,然后读取刚刚写入的数据.我正在尝试编写一个无符号字符数组.我在阅读数据时遇到了一些问题.我不确定我是在写不正确的数据还是读错了.当我读取数据时,我得到的输出为:5 bytes对于读取的字节数,但我得到的输出与我写入文件的值不同.

FILE *binFile = fopen("sample","wb");

unsigned char data[5]={5,10,15,20,25};
fwrite(data,sizeof(unsigned char),sizeof(data),binFile);
fclose(binFile);

unsigned char data2[5];
binFile = fopen("sample","rb");
int s = fread(data2,1,sizeof(data),binFile);
fclose(binFile);
cout<<s<<" bytes\n";
for(int i=0; i<5;i++)
        cout<<data2[i]<<" ";
cout<<"\n";
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 7

您作为输出看到的是元素的ASCII字符 array

Typecast unsigned charint

这将给出预期的输出.

for(int i=0; i<5;i++)
        cout<<(int)data2[i]<<" ";
Run Code Online (Sandbox Code Playgroud)