/* * cv [-]{bcdho}{bcdhlo} n [n...] */ char digits[] "0123456789abcdef"; main(argc, argv) char *argv[]; { register char *p; register ibase, obase, i; if (argc < 3) error("Arg count"); p = argv[1]; if (*p = '-') p++; ibase = cvbase(*p); obase = cvbase(*++p); for (i=2; i= 'a' && c <= 'f') c =+ '0'+10-'a'; if (c >= 'A' && c <= 'F') c =+ '0'+10-'A'; if ((c =- '0') < 0 || c > base) error("Number syntax"); n = n*base + c; } return(*s == '-' ? -n : n); } putnum(num, base) { register n, c, i; char buff[32]; extern int ldivr; n = num; if (base == 0) { base = 10; if (n < 0) { n = -n; putchar('-'); } } i = 31; if (base == 1) { while (c = n&0377) { buff[i--] = c; n =>> 8; } } else do { n = ldiv(0, n, base); buff[i--] = digits[ldivr]; } while (n); while (++i < 32) putchar(buff[i]); }