![]() |
Some guidance needed
Hi to all?
For the past couples of weeks I have been programming to make a program that reads a binary file and produces the equivalent text file. The idea is that each byte in the file represents a temperature that can only go from 0 to 255. So I start by reading the file in to a character array, and the do an int casting to obtain the value of each file, so my code is something like this: ifstream inFile("binary.dat"); ofstream outFile("binary.txt"); inFile.seekg(0, ios::end); int size = inFile.tellg(); inFile.seekg(0, ios::beg); char charArray[size]; inFile.read(charArray, size); for(int= 0; i<size; i++) { outFile << (int)charArray[i] <<endl; } .... etc ... I expected the output to range from 0 to 255, but I get values from -128 to 127!!? and if I use (unsigned int) instead of (int) the output is even worst. Is there a better way to see what is the integer equivalent that each byte holds ? Regards, Alexis _______________________ bostonmegarocker@yahoo.com |
Re: Some guidance needed
I assumed that 0-255 means, you don't have negative value.
Then try "unsigned char" "bostonmegarocker" <bostonmegarocker@hotmail.com> wrote in message news:6cb461a8.0306301205.11628021@posting.google.c om... > Hi to all? > > For the past couples of weeks I have been programming to make a > program that reads a binary file and produces the equivalent text > file. > > The idea is that each byte in the file represents a temperature that > can only go from 0 to 255. So I start by reading the file in to a > character array, and the do an int casting to obtain the value of each > file, so my code is something like this: > > ifstream inFile("binary.dat"); > ofstream outFile("binary.txt"); > > inFile.seekg(0, ios::end); > int size = inFile.tellg(); > inFile.seekg(0, ios::beg); > char charArray[size]; > > inFile.read(charArray, size); > > for(int= 0; i<size; i++) > { > outFile << (int)charArray[i] <<endl; > } > > ... etc ... > > I expected the output to range from 0 to 255, but I get values from > -128 to 127!!? and if I use (unsigned int) instead of (int) the output > is even worst. > > Is there a better way to see what is the integer equivalent that each > byte holds ? > > Regards, > Alexis > _______________________ > bostonmegarocker@yahoo.com |
Re: Some guidance needed
Thanks Min,
That worked for me. I really appreciate your help. - alexis "Min" <nobody@home.com> wrote in message news:<fY0Ma.327717$ro6.7915627@news2.calgary.shaw. ca>... > I assumed that 0-255 means, you don't have negative value. > Then try "unsigned char" > > "bostonmegarocker" <bostonmegarocker@hotmail.com> wrote in message > news:6cb461a8.0306301205.11628021@posting.google.c om... > > Hi to all? > > > > For the past couples of weeks I have been programming to make a > > program that reads a binary file and produces the equivalent text > > file. > > > > The idea is that each byte in the file represents a temperature that > > can only go from 0 to 255. So I start by reading the file in to a > > character array, and the do an int casting to obtain the value of each > > file, so my code is something like this: > > > > ifstream inFile("binary.dat"); > > ofstream outFile("binary.txt"); > > > > inFile.seekg(0, ios::end); > > int size = inFile.tellg(); > > inFile.seekg(0, ios::beg); > > char charArray[size]; > > > > inFile.read(charArray, size); > > > > for(int= 0; i<size; i++) > > { > > outFile << (int)charArray[i] <<endl; > > } > > > > ... etc ... > > > > I expected the output to range from 0 to 255, but I get values from > > -128 to 127!!? and if I use (unsigned int) instead of (int) the output > > is even worst. > > > > Is there a better way to see what is the integer equivalent that each > > byte holds ? > > > > Regards, > > Alexis > > _______________________ > > bostonmegarocker@yahoo.com |
| All times are GMT. The time now is 06:21 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.