nuclear@6: #include nuclear@6: #include nuclear@6: nuclear@6: int atoi(const char *str) nuclear@6: { nuclear@6: return atol(str); nuclear@6: } nuclear@6: nuclear@6: long atol(const char *str) nuclear@6: { nuclear@6: long acc = 0; nuclear@6: int sign = 1; nuclear@6: nuclear@6: while(isspace(*str)) str++; nuclear@6: nuclear@6: if(*str == '+') { nuclear@6: str++; nuclear@6: } else if(*str == '-') { nuclear@6: sign = -1; nuclear@6: str++; nuclear@6: } nuclear@6: nuclear@6: while(*str && isdigit(*str)) { nuclear@6: acc = acc * 10 + (*str - '0'); nuclear@6: str++; nuclear@6: } nuclear@6: nuclear@6: return sign > 0 ? acc : -acc; nuclear@6: } nuclear@6: nuclear@6: void itoa(int val, char *buf, int base) nuclear@6: { nuclear@6: static char rbuf[16]; nuclear@6: char *ptr = rbuf; nuclear@6: int neg = 0; nuclear@6: nuclear@6: if(val < 0) { nuclear@6: neg = 1; nuclear@6: val = -val; nuclear@6: } nuclear@6: nuclear@6: if(val == 0) { nuclear@6: *ptr++ = '0'; nuclear@6: } nuclear@6: nuclear@6: while(val) { nuclear@6: int digit = val % base; nuclear@6: *ptr++ = digit < 10 ? (digit + '0') : (digit - 10 + 'a'); nuclear@6: val /= base; nuclear@6: } nuclear@6: nuclear@6: if(neg) { nuclear@6: *ptr++ = '-'; nuclear@6: } nuclear@6: nuclear@6: ptr--; nuclear@6: nuclear@6: while(ptr >= rbuf) { nuclear@6: *buf++ = *ptr--; nuclear@6: } nuclear@6: *buf = 0; nuclear@6: } nuclear@6: nuclear@6: void utoa(unsigned int val, char *buf, int base) nuclear@6: { nuclear@6: static char rbuf[16]; nuclear@6: char *ptr = rbuf; nuclear@6: nuclear@6: if(val == 0) { nuclear@6: *ptr++ = '0'; nuclear@6: } nuclear@6: nuclear@6: while(val) { nuclear@6: unsigned int digit = val % base; nuclear@6: *ptr++ = digit < 10 ? (digit + '0') : (digit - 10 + 'a'); nuclear@6: val /= base; nuclear@6: } nuclear@6: nuclear@6: ptr--; nuclear@6: nuclear@6: while(ptr >= rbuf) { nuclear@6: *buf++ = *ptr--; nuclear@6: } nuclear@6: *buf = 0; nuclear@6: } nuclear@6: