Frost Moon Project

Src/bin2hex.cpp-恋するHEXと畢竟のBIN Ver.1.00- - Frost Moon Project アクセスランキング

Home > ソフトウェア > 恋するHEXと畢竟のBIN > hex2bin2hex100.zip > Src > bin2hex.cpp

//bin2hex.cpp Coded by x@rgs
#include <stdio.h>

//出力ファイル名用バッファ(省略された時のみ)
const int iFileNmaeBuffer=1024;

int strlen(const char *str){
    int i=0;
    while(*str++)i++;
    return i;
}

int main(int argc,const char* argv[]){
    FILE* fpIn;
    FILE* fpOut;

    if(argc==2||argc==3){
        if((fpIn=fopen(argv[1],"rb"))!=NULL){
            char szOut[iFileNmaeBuffer]={0};
            char* pszOut;
            if(argc==2){
                //出力ファイル名が省略された時は~.hexとして出力
                int i=strlen(argv[1]);
                if(i+1>iFileNmaeBuffer){
                    //バッファが足りない時はa.hexとして出力
                    szOut[0]='a';
                    i=1;
                }else{
                    pszOut=szOut;
                    while((*(pszOut)++=*(argv[1])++));
                }
                szOut[i]='.';
                szOut[++i]='h';
                szOut[++i]='e';
                szOut[++i]='x';
            }

            if((fpOut=fopen((argc==2)?szOut:argv[2],"w"))!=NULL){
                int i=0;
                int iChar;

                while((iChar=fgetc(fpIn))!=EOF){
                    if(i!=0){
                        //16文字毎に改行する
                        if(i%16==0)fprintf(fpOut,"\n");
                        else fprintf(fpOut," ");
                    }
                    fprintf(fpOut,"%02lx",iChar&0xFFl);
                    i++;
                }
                fclose(fpOut);
            }else{
                fprintf(stderr,"Cannot open %s\n",(argc==2)?szOut:argv[2]);
            }
            fclose(fpIn);
        }else{
            fprintf(stderr,"Cannot open %s\n",argv[1]);
        }
    }else{
        fprintf(stderr,"Invalid argument\n");
    }
    return 0;
}

Home > ソフトウェア > 恋するHEXと畢竟のBIN > hex2bin2hex100.zip > Src > bin2hex.cpp