home *** CD-ROM | disk | FTP | other *** search
- From: koblas@mips.COM (David Koblas)
- Newsgroups: alt.sources
- Subject: Re: conv.c -- simple numeric base converter
- Message-ID: <39976@mips.mips.COM>
- Date: 8 Jul 90 20:27:15 GMT
-
- Yet another base converter, but written as a replacement for atof.
- Called as:
- val = atov("0x123", 0);
- val = atov("abz", 36);
-
- Where the second argument is the default base, if == 0 then use
- default conventions: 0x = 16, 0 = 8, 0% = binary, else base 10.
-
- -----CUT---HERE----------------------------------------------------------
-
- /* +------------------------------------------------------------------+ */
- /* | Copyright 1989, David Koblas. | */
- /* | You may copy this file in whole or in part as long as you | */
- /* | don't try to make money off it, or pretend that you wrote it. | */
- /* +------------------------------------------------------------------+ */
-
- #include <ctype.h>
-
- #ifdef TEST
- main(argc,argv)
- int argc;
- char **argv;
- {
- int i;
- for (i=1;i<argc;i++)
- printf("%10s == %d\n",argv[i],atov(argv[i],0));
- }
- #endif
-
- atov(str,type)
- char *str;
- int type;
- {
- int sign = 1;
- int i;
- char c;
- int val=0,n;
-
- i=0;
- while ((str[i]==' ') || (str[i]=='\t')) i++;
- if (str[i]=='-') {
- sign = -1;
- i++;
- } else if (str[i]=='+') {
- sign = 1;
- i++;
- }
- if (type==0) {
- if (str[i]=='0') {
- i++;
- if (str[i]=='%') {
- i++;
- type=2;
- } else if (str[i]=='x') {
- i++;
- type=16;
- } else {
- type=8;
- }
- } else {
- type=10;
- }
- }
- for (;i<strlen(str);i++) {
- c=str[i];
- if (isdigit(c)) {
- n = c - '0';
- } else if (isupper(c)) {
- n = c - 'A' + 10;
- } else if (islower(c)) {
- n = c - 'a' + 10;
- } else {
- goto out;
- }
- if (n>=type)
- goto out;
- val = (val*type)+n;
- }
- out:
- return(val * sign);
- }
-
-
- --
- name : David Koblas domain: koblas@cs.uoregon.edu
- place: Nowhere, I'm just an AI batch job. domain: koblas@mips.com
- quote: "Time has little to do with domain: koblas@riacs.edu
- infinity and jelly donuts." domain: koblas@stellar.arc.nasa.gov
-