|
#include <stdio.h>
#include <memory.h>
int GetFileSize( FILE *ifp );
void DspDump( char *buf16, int len );
void CheckPrint( int i );
void
main( int argc, char *argv[] )
{
FILE *fp;
fp = fopen( argv[1], "rb" );
if ( fp == NULL ) {
printf( "入力ファイル (%s) のオープンに失敗しました\n", argv[1] );
exit( 1 );
}
char buffer[16+2];
int nFileSize;
nFileSize = GetFileSize( fp );
while( 1 ) {
fread( buffer, 16, 1, fp );
if ( nFileSize - 16 <= 0 ) {
DspDump( buffer, nFileSize );
break;
}
DspDump( buffer, 16 );
nFileSize = nFileSize - 16;
}
fclose( fp );
}
int
GetFileSize( FILE *ifp )
{
int ret;
// ファイルサイズの取得
fseek( ifp, 0, SEEK_END );
ret = ftell( ifp );
// ファイルポインタを先頭に移動
fseek( ifp, 0, SEEK_SET );
return( ret );
}
void
DspDump( char *buf16, int len )
{
int i;
char HexChar[1+3];
for( i = 0; i < len; i++ ) {
// printf( "%02x", (unsigned char)(*(buf16+i)) );
sprintf( HexChar, "%02x ", 0x000000ff & (*(buf16+i)) );
printf( "%s", strupr( HexChar ) );
}
printf( " " );
for( i = 0; i < len; i++ ) {
CheckPrint( (int)(0x000000ff & (*(buf16+i))) );
}
printf( "\n" );
}
void
CheckPrint( int i )
{
if ( i >= 0 && i <= (int)0x1f ) {
printf( " " );
}
if ( i >= (int)0x20 && i <= (int)0xff ) {
printf( "%c", (char)i );
}
// if ( i >= (int)0x7f && i <= (int)0xa0 ) {
// printf( " " );
// }
// if ( i >= (int)0xa1 && i <= (int)0xdf ) {
// printf( "%c", (char)i );
// }
// if ( i >= (int)0xe0 && i <= (int)0xff ) {
// printf( " " );
// }
}
| |