undump

ダンプはバイナリを2桁の16進数文字列のアスキーに変換するけれど、
その逆に、2桁の16進数文字列からバイナリに戻すツール。

#include 
#include 
#include 

int main(int argc, char* argv[])
{
    fprintf(stderr, "undump version 1.00\n");
    fprintf(stderr, "Copyright (C) Yoshinori Watanabe 2005. All Rights Reserved.\n\n");

    if (argc != 3) {
        printf("usage: undump [txt-file] [bin-file]\n");
        exit(-1);
    }
    FILE* in = fopen(argv[1], "rt");
    if (in == NULL) exit(-2);
    FILE* out = fopen(argv[2], "wb");
    if (out == NULL) {
        fclose(in);
        exit(-3);
    }
    while (! feof(in)) {
        char buf[4096];
        char* p = fgets(buf, sizeof(buf), in);
        if (p == NULL) break;
        p = strtok(buf, " ");
        while (p != NULL) {
            char* err = NULL;
            int value = strtol(p, &err, 16);
            fwrite(&value, 1, 1, out);
            p = strtok(NULL, " ");
        }
    }
    fclose(in);
    fclose(out);
    
    return 0;
}

以前も同じツールを作ったんだけれど、欲しいときに手元になかったので、
即席で作っちゃいました。