home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / unix / tohex.c < prev    next >
C/C++ Source or Header  |  1984-09-18  |  1KB  |  71 lines

  1.  
  2. #include <stdio.h>
  3.  
  4. char hex[] = "@ABCDEFGHIJKLMNO";
  5. int bytes,sum;
  6. unsigned long htonl();
  7.  
  8. main(argc,argv)
  9.     char **argv;
  10. {
  11.     register i,len;
  12.     register char *cp;
  13.  
  14.     len = 0;
  15.     while ((i = getchar()) != EOF) {
  16.         bytes++;
  17.         sum += i;
  18.         putchar(hex[i>>4]);
  19.         putchar(hex[i&0xF]);
  20.         if (++len > 32) {
  21.             putchar('\n');
  22.             len = 0;
  23.         }
  24.     }
  25.     fprintf(stderr, "bytes %d, sum %d\n", bytes, sum);
  26.     putchar('|');
  27.     sum += bytes;
  28.     sum = htonl(sum);
  29.     cp = (char *)∑
  30.     for (len = 0 ; len < 4 ; len++) {
  31.         i = (*cp++ & 0xff);
  32.         putchar(hex[i>>4]);
  33.         putchar(hex[i&0xF]);
  34.     }
  35.     putchar('\n');
  36.     exit(0);
  37. }
  38.  
  39. #define nohtonl
  40. #ifdef nohtonl    /* if not in library */
  41. /*
  42.  * "Host" to "net" byte order swappers.
  43.  */
  44. unsigned short htons(a)
  45.     unsigned short a;
  46. {
  47.     unsigned short result;
  48.     register char *sp = (char *)&a;
  49.     register char *dp = (char *)&result;
  50.  
  51.     dp[1] = *sp++;
  52.     dp[0] = *sp;
  53.     return (result);
  54. }
  55.  
  56.  
  57. unsigned long htonl(a)
  58.     unsigned long a;
  59. {
  60.     unsigned long result;
  61.     register char *sp = (char *)&a;
  62.     register char *dp = (char *)&result;
  63.  
  64.     dp[3] = *sp++;
  65.     dp[2] = *sp++;
  66.     dp[1] = *sp++;
  67.     dp[0] = *sp;
  68.     return (result);
  69. }
  70. #endif
  71.