コンテキスト:C - 逆変換プロセス
私はc
コンバータのプロセスを逆転しようとしています。これは、元コンバータです:
#include <stdio.h>
int main(void) {
FILE *f = fopen("input.bin", "rb");
fseek(f, 0, SEEK_END);
int s = ftell(f);
rewind(f);
FILE *o = fopen("output.txt", "wb");
int i;
for(i = 0; i < s/4; i++) {
unsigned int u;
fread(&u, sizeof(u), 1, f);
fprintf(o, "u32[%d] = 0x%08x;\n", i, u);
}
fclose(o);
fclose(f);
return 0;
}
それはoutput.txt
と呼ばれる新しいファイルを作成し、このような順序でバイトに.bin
ファイルを変換している何:
u32[0] = 0x53555441;
u32[1] = 0x6373b848;
u32[2] = 0x74654e65;
u32[3] = 0x83486f53;
u32[4] = 0x0ebe60ec;
u32[5] = 0x48000000;
u32[6] = 0x40245c8d;
u32[7] = 0x24448948;
u32[8] = 0xda894840;
u32[9] = 0x244c8d48;
u32[10] = 0x024fbf10;
u32[11] = 0xc0310000;
u32[12] = 0x482444c7;
u32[13] = 0x74656b63;
質問:
今、私がやっていることは、反対です。したがって、元の状態のように、上記のコンバータの出力バイトを.bin
ファイルに再度変換しようとしています。
私はこれを試してみましたが、私はループ部分にこだわっている:
#include <stdio.h>
int main(void) {
FILE *f = fopen("loader.txt", "rb"); // INPUT
fseek(f, 0, SEEK_END);
int s = ftell(f);
rewind(f);
FILE *o = fopen("loader.bin", "wb"); // OUTPUT
int i;
for(i = 0; i < s/4; i++) {
// grab u32 bytes from loader.txt and convert into a .bin
}
fclose(o);
fclose(f);
return 0;
}
誰もがこれで私を助けることはできますか?驚くほど憂鬱になるだろう。
編集ここ
#include <stdio.h>
int main(void) {
FILE *f = fopen("loader.txt", "rb"); // INPUT
rewind(f);
FILE *o = fopen("loader.bin", "wb"); // OUTPUT
int i;
for(i = 0; i < s/4; i++) {
fgets(f);
sscanf(f);
}
fclose(o);
fclose(f);
return 0;
}
解決策があった以前のこれと同様の質問を見たことがありますが、今見つけられません... –
@ChrisTurnerそれも説明していないよく、アカウントがロックされてdownvotesのために後で質問を投稿できませんでした。 – Mitch
変数名に意味のある名前を付けてください。一文字変数は誰にも役に立ちません。 –