#include #include #include #include #include #include char progid[80] = "hextext.c by John Copeland 11/21/03, 9/8/04" ; static FILE *infile ; int main(int argc, char * argv[ ]) { char *ip ; // ip:infile unsigned long i, j, k, m, n, np ; unsigned long p_limit ; unsigned char in_buf[320] ; //buffers char out_buf[81] ; printf("\n" ) ; if ( argc < 2 ) { fprintf(stderr, "hextext usage: hextext datafile [number-lines]\n"); exit(1); } ip = argv[1]; //input file name if(argc > 2) { p_limit = atoi(argv[2]) ; } else p_limit = 30 ; printf("Maximum Lines (p_limit) value: %lu \n", p_limit ); // File opening for input file if((infile = fopen (ip,"rb"))==NULL) { printf("Input File %s Can Not Be Read\n", ip) ; exit(-1); } out_buf[73] = out_buf[81] = 0 ; printf("Input File is %s\n\n", ip ) ; printf("\nByte No. HEX VALUES TEXT\n ") ; for( k=0 ; k<20 ; k=k+2 ) printf("%2lu ", k ) ; printf(" 0 2 4 6 8 0 2 4 6 8\n"); m = 0; for( np = 0 ; np < p_limit ; np++ ) { // ##### LOOP TO READ LINES ######## n = fread( (void *) in_buf, 1, 20 , infile); // read 20 bytes if ( n == 0 ) { printf("EOF - ") ; break ; } if ( n < 20 ) { for( i = n ; i < 20 ; i++) in_buf[ i ] = 0 ; } printf("%4lu: ",m) ; m=m+n ; for( i = 0 ; i < 10 ; i++ ) { // i = 0 to 9 sprintf( &out_buf[5*i], "%2x%2x ", in_buf[2*i], in_buf[2*i+1] ) ; for( j = 5*i ; j < 5*i + 4 ; j++) { if( out_buf[j] == ' ' ) out_buf[j] = '0' ; } out_buf[ 5*i + 4] = ' ' ; if((in_buf[2*i] > 32) && (in_buf[2*i]< 128)) out_buf[53+2*i] = in_buf[2*i] ; else out_buf[53+2*i] = '.' ; if((in_buf[2*i+1] > 32) && (in_buf[2*i+1]< 128)) out_buf[53+2*i+1] = in_buf[2*i+1] ; else out_buf[53+2*i+1] = '.' ; } out_buf[ 50] = ' ' ; out_buf[ 51] = ':' ; out_buf[ 52] = ' ' ; printf( "%s\n", out_buf ) ; if ( n < 20 ) { printf("EOF - ") ; break ; } } // ##################### END OF LOOP TO READ LINES ######################### printf("\n Lines: %lu, Bytes: %lu %s\n\n", np, m, progid); return( m ) ; ; } // END MAIN() // ***EOF***