#include #include #include static char *binary(unsigned int i, unsigned int w) { static char buff[1024]; char *p; unsigned int c; unsigned int b; c = w; b = 1<<(w-1); p = buff; for(c = w; c--; b = b>>1) { if(i&b) { *p++='1'; } else { *p++='0'; } } *p='\0'; return buff; } int main(int argc, char *argv[]) { int f; int l; int r; unsigned int c; if(argc == 1 || (argc == 2 && strcmp(argv[1],"-c") == 0)) { printf("%s: usage %s string1 [..stringn] | -c num1 [.. num n]\n", argv[0],argv[0]); exit(EXIT_FAILURE); } if(strcmp(argv[1],"-c") != 0) { for(r = 1 ;r < argc; r++) { l = strlen(argv[r]); for(f = 0; f < l; f++) { c = (unsigned int)*(argv[r]+f); printf("%c (%3u - 0x%2.2X %%%s)\n", (*(argv[r]+f) > 31) ? (*(argv[r]+f)) : '?', (unsigned int)(unsigned char)c, (unsigned int)(unsigned char)c, binary(c,8)); } } } else { for(f=2;f31 ? (char)c : '?', c, c, binary(c,8)); } } return EXIT_SUCCESS; }