5
이진 데이터 (인코딩 없음)로 저장된 원시 이미지 파일이 있습니다. 파일을 읽고 값을 부호없는 char로 캐스팅하고 싶습니다. 하지만이 일을 시작하는 방법을 잘 모르겠습니다. 각 파일에는 640x480 바이트가 들어 있습니다. 각 픽셀은 8 비트입니다.이진 데이터를 읽고 unsigned char (C++)로 캐스팅하는 방법
여기에 C++ 도움말 페이지를 사용했습니다 : http://www.cplusplus.com/doc/tutorial/files/, 그러나 내가 데이터를 요구할 때 동일한 바이너리/사람이 읽을 수없는 문자가 표시되는 것 같습니다. 누군가 조언 해 줄 수 있습니까? 여기
#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;
}
샘플 출력 캡처됩니다 :
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
흠, MathWizz가 대신 int를 제공합니다. unsigned char (0에서 255)로 변환하고 싶습니다. 그것을 할 방법이 없습니까? 그것을 int로만 변환해야합니까? – c0d3rz
예상되는 결과는 무엇입니까? 숫자 값만 인쇄하고 있습니까? – trumank
아니요, 서명되지 않은 문자를 처리하고 싶습니다. 바이너리로 저장된 Raw 이미지를 얻습니다. 그저 읽을 수없는 형식을 다루는 것만으로 머리를 감쌀 수 없으므로, 무슨 일이 일어나고 있는지 알 수 있도록 서명되지 않은 문자로 작업하고 싶습니다. 지금은 디버깅 용으로 만 캐스팅했습니다. 하지만 memblock이 본질적으로 모든 값을 부호없는 문자로 바꾸기를 원합니다 ... – c0d3rz