首先,我为我会犯的任何英语错误道歉,但是 15 岁和法语并没有帮助......
我正在尝试借助文件格式规范(http://www.libpng.org/pub/png/spec/1.2/PNG-Contents.html)对 PNG 解码器进行编程,但我遇到了一个奇怪的问题。
规范说 PNG 文件的前 8 个字节总是包含以下(十进制)值:137 80 78 71 13 10 26 10。
当我测试这个简单的程序时:
int main()
{
ifstream file("test.png");
string line;
getline(file, line);
cout << line[0] << endl;
}
输出是“ë”,它代表 ascii 表中的 137。很好,它匹配第一个字节。
但是,当我这样做时int ascii_value = line[0];
,输出值为 -119,这不是正确的 ascii 值。
当我用另一个字符(如“e”)尝试同样的事情时,它确实输出了正确的 ascii 值。
有人可以解释我做错了什么以及解决方案是什么?我个人认为这是扩展 ascii 表的问题,但我不确定。
谢谢大家 !我会将签名的字符转换为未签名的字符!