SSブログ

hdump.cpp [C++]

// hdump

#include <iostream>
using namespace std;

void hdump(FILE *src, FILE *dst){
    int n;
    unsigned long count = 0;
    unsigned char buf[16];
   
    while((n = fread(buf, 1, 16, src)) > 0){
        int i;
       
        fprintf(dst, "%08lX ", count);  //アドレス
        for(i = 0; i < n; i++){ //十六進
            fprintf(dst, "%0*X ", (CHAR_BIT + 3) / 4,(unsigned)buf[i]);
        }
        if(n < 16){
            for(i = n; i < 16; i++){
                fputs("   ", dst);
            }
        }
        for(i = 0; i < n; i++){
            fputc(isprint(buf[i]) ? buf[i] : '・', dst);
        }
        fputc('\n', dst);
        count += 16;
    }
    fputc('\n', dst);
}

int main(int argc, char *argv[]){
    FILE *fp;
   
    if(argc < 2){
        hdump(stdin, stdout);
    }
    else{
        while(--argc > 0){
            if((fp = fopen(*++argv, "rb")) == NULL){
                fprintf(stderr, "ファイル%sがオープンできません。\n", *argv);
                return(1);
            }
            else{
                hdump(fp, stdout);  //ファイルから標準出力へ
                fclose(fp);
            }
        }
    }
    return(0);
}
─────

CPP hdump0.jpg

CPP hdump1.jpg


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

entab.cpp2^1000000の計算 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。