I have a raw image file that is stored in binary data (without encoding). I want to read in a file and pass unsigned char values. But I'm not sure how to start doing this. Each file contains 640x480 bytes. Each pixel is 8 bits.
I used the C ++ man page here: http://www.cplusplus.com/doc/tutorial/files/ , however when I look at the data it seems to show the same binary / human readable characters. Can someone please advise? Here is my code:
#include <iostream>
#include <fstream>
using namespace std;
ifstream::pos_type size;
char * memblock;
int main () {
ifstream file ("imageData.raw", ios::in|ios::binary|ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock = new char [size];
file.seekg (0, ios::beg);
file.read (memblock, size);
cout << "the complete file content is in memory";
for (int l=0; l<size; l++){
cout << " memblock[] is = " << (unsigned char)memblock[l] << " index was l = " << l << endl;
}
file.close();
delete[] memblock;
}
else cout << "Unable to open file";
return 0;
}
Here is an example of capturing output:
memblock[] is = โ index was l = 2937
memblock[] is = E index was l = 2938
memblock[] is = ฯ index was l = 2939
memblock[] is = C index was l = 2940
memblock[] is = โ index was l = 2941
memblock[] is = B index was l = 2942
memblock[] is = โฌ index was l = 2943
memblock[] is = D index was l = 2944
memblock[] is = โผ index was l = 2945
memblock[] is = C index was l = 2946
memblock[] is = โ index was l = 2947
memblock[] is = B index was l = 2948
memblock[] is = โค index was l = 2949
memblock[] is = B index was l = 2950
memblock[] is = ยฟ index was l = 2951
memblock[] is = > index was l = 2952
memblock[] is = รญ index was l = 2953
memblock[] is = ; index was l = 2954
memblock[] is = ยฃ index was l = 2955
memblock[] is = 6 index was l = 2956
memblock[] is = รก index was l = 2957
memblock[] is = 4 index was l = 2958
memblock[] is = ร index was l = 2959
memblock[] is = 7 index was l = 2960
memblock[] is = โก index was l = 2961
source
share