char buffer[4] = {0};
for () {
fread(buffer, sizeof(char), 4, fp)
m[i++] = buffer[0];
m[i++] = buffer[1];
m[i++] = buffer[2];
m[i++] = buffer[3];
}
fwrite関数でバイナリとして書き込んだb[j] = 199 = 1100 0111を
上のfread関数で読み込むとbuffer[3] = 0xffff ffc7と読み込まれます。
知識不足でよくわからないのですが
他の小さな数は読み取れて、一番大きな199が読み取れない、8ビットの先頭ビットがセットされている
ことから符号付き8ビットの-128~127の範囲オーバーでバグっているような気がします。
となると、fread関数で読み取る際のサイズをcharからintにすればビット数が16ビットに増えて
1100 0111の先頭ビットが符号ビットとしてみられなくなると思うのですが
8ビット単位で配列に読み取って配列に格納したいのに
fread関数のsizeof(char)の部分をsizeof(int)に変更すると16ビットずつ読み取り配列に格納することになり
変換作業などがとても大変になると思います。
やりたいことや現在の状況を上手く説明できていないと思いますが、
こういう場合はどういうふうに対処すれば良いのでしょうか?
なにか良い手はないでしょうか?
回答の方お願いします。