5
バイナリデータ(エンコーディングなし)で保存された生のイメージファイルがあります。私はファイルを読み込み、値をunsigned 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
Hmm、MathWizzは、代わりにintを返します。私はそれを符号なしの文字(0から255)に変換したい。それを行う方法はありますか?それをintに変換する必要がありますか? – c0d3rz
期待される出力は何ですか?数値のみを出力するようにキャストしていますか? – trumank
いいえ、私は無署名の文字を扱いたいと思います。私はバイナリで保存された生のイメージを取得します。私はその読み込み不可能なフォーマットを扱うことで頭を包むことができないので、何が起こっているかを見ることができるように、無署名の文字で作業したい。私は今のところデバッグのためだけにキャストしていました。しかし、私はmemblockが基本的にそれらの値をすべてunsigned charsに変換したいと思っています。 – c0d3rz