最近、よくバイナリファイルをバイナリエディタで見る。
しかし、例えば
22 01 00 00
となっていても、これが10進でいくつになるかすぐにはわからないだろう。
そこで、次のような関数を作る。
int dec2hex(int x) {
int y = 0;
int h = 1;
while(x != 0) {
int mod = x % 10;
y += h * mod;
x = (x - mod) / 10;
h <<= 4;
}
return y;
}
そうして、
int x = dec2hex(290);
fwrite(&x, sizeof(x), 1, fp);
としてファイルに書いて、バイナリエディタで見ると、
90 02 00 00
となって、290とすぐわかる。
(リトルエンディアンだから順番逆だが)
読むときは、読んでから逆変換する。