#include <stdlib.h> /*整形转字符型*/ char * itoa(int value, char *string, int radix) { char tmp[33]; char *tp = tmp; int i; unsigned v; int sign; char *sp; if (radix > 36 || radix <= 1) { return 0; } sign = (radix == 10 && value < 0); if (sign) v = -value; else v = (unsigned)value; while (v || tp == tmp) { i = v % radix; v = v / radix; if (i < 10) *tp++ = i + '0'; else *tp++ = i + 'a' - 10; } if (string == 0) string = (char *)malloc((tp - tmp) + sign + 1); sp = string; if (sign) *sp++ = '-'; while (tp > tmp) *sp++ = *--tp; *sp = 0; return string; } /*长整形转字符型*/ char *ltoa(long value, char *string, int radix) { char tmp[33]; char *tp = tmp; long i; unsigned long v; int sign; char *sp; if (radix > 36 || radix <= 1) { return 0; } sign = (radix == 10 && value < 0); if (sign) v = -value; else v = (unsigned long)value; while (v || tp == tmp) { i = v % radix; v = v / radix; if (i < 10) *tp++ = i + '0'; else *tp++ = i + 'a' - 10; } if (string == 0) string = (char *)malloc((tp - tmp) + sign + 1); sp = string; if (sign) *sp++ = '-'; while (tp > tmp) *sp++ = *--tp; *sp = 0; return string; } /*无符号长整形转字符型*/ char *_ultoa(unsigned long value, char *string, int radix) { char tmp[33]; char *tp = tmp; long i; unsigned long v = value; char *sp; if (radix > 36 || radix <= 1) { return 0; } while (v || tp == tmp) { i = v % radix; v = v / radix; if (i < 10) *tp++ = i + '0'; else *tp++ = i + 'a' - 10; } if (string == 0) string = (char *)malloc((tp - tmp) + 1); sp = string; while (tp > tmp) *sp++ = *--tp; *sp = 0; return string; }
来源:https://www.cnblogs.com/s3320/p/11959314.html