【发布时间】:2016-03-20 08:42:25
【问题描述】:
简短的长程序:我正在逐字节读取二进制文件,在每个读取字节后我输出这个字节但不是作为字符(因为我声明了一个变量char c并将值存储在其中)而是作为int .当我得到大约 125 以上的二进制值时,我得到的值为负值。
例如,当我读取hex 89 = dec 137 并将此字符输出为int 时,我得到值-119。
另一个例子:我读到hex 83 = dec 131 并将这个字符输出为int,我得到值-125。
我按字节读取这个文件:
ifstream inFile;
inFile . open( srcName, ios::binary | ios::in );
char c;
while( inFile . get( c ) ){
inFile . get( c );
cout << (int) c << endl;
}
【问题讨论】:
-
我猜
char在您的系统上已签名。 -
假设一个有符号字符,一切都将在 -128 到 127 的范围内
-
先尝试将其转换为
unsigned char?并且请不要使用 C-style cast,了解static_cast。 -
你总是可以使用 if((int)c
-
他们是否还在高中或大学水平的 CS 课程中教授补码数学?显然不是。