Im haveing trouble reading a file in hexidecimal. Lets say I have a file called "something.txt" which goes as follows:
Hello
1234567890
©§¥
!@#$%^&*()
My program display lines 1,2, and 4 correctly but I get some strange errors on line 3. This is my code:
Code:
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
int main()
{
char charVal[1] = "";
char hexVal[3] = "";
char charSingle = ' ';
int intVal = 0;
ifstream file("something.txt", ios::binary);
while(!file.eof())
{
file.read(charVal, 1);
charSingle = charVal[0];
intVal = (unsigned int)charSingle;
sprintf(hexVal,"%X", intVal);
cout << hexVal << " ";
}
return 0;
}
On the third line my program outputs: "FFFFFFA9 FFFFFFA7 FFFFFFA5"
If I replace the last line in my code to "cout << intVal << " ";" Then it outputs: "-87 -89 - 91". Why am I getting negatives? If I put this code:
Code:
intVal = (unsigned int)'©';
sprintf(hexVal,"%X", intVal);
cout << hexVal << " ";
outside of the while loop it displays "FFFFFA9". However if I were to replace it with this code:
Code:
intVal = 169; // 169 is the decimal value for ©
sprintf(hexVal,"%X", intVal);
cout << hexVal << " ";
it displays "A9" instead of "FFFFFFA9" which is what the -87 value was doing.