From 6ea757f492d0fffccff816fbc8216bca792d7be1 Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Wed, 28 Sep 2022 22:13:57 +0800 Subject: [PATCH] add function fc_itoa --- HISTORY | 3 +- src/common_define.h | 19 ++++++++ src/shared_func.c | 103 ++++++++++++++++++++++++++++++++++++++++++++ src/shared_func.h | 7 +++ 4 files changed, 131 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index 81f0bda..d21aece 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,7 @@ -Version 1.62 2022-09-27 +Version 1.62 2022-09-28 * add function fc_sleep_us + * add function fc_itoa Version 1.61 2022-09-21 * get_base_path_from_conf_file_ex support parameter: noent_log_level diff --git a/src/common_define.h b/src/common_define.h index c1f9653..af3693b 100644 --- a/src/common_define.h +++ b/src/common_define.h @@ -159,6 +159,25 @@ extern int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int kind); #define FC_TIME_UNIT_USECOND 'u' //microsecond #define FC_TIME_UNIT_NSECOND 'n' //nanosecond +#define FC_1E01 10LL +#define FC_1E02 100LL +#define FC_1E03 1000LL +#define FC_1E04 10000LL +#define FC_1E05 100000LL +#define FC_1E06 1000000LL +#define FC_1E07 10000000LL +#define FC_1E08 100000000LL +#define FC_1E09 1000000000LL +#define FC_1E10 10000000000LL +#define FC_1E11 100000000000LL +#define FC_1E12 1000000000000LL +#define FC_1E13 10000000000000LL +#define FC_1E14 100000000000000LL +#define FC_1E15 1000000000000000LL +#define FC_1E16 10000000000000000LL +#define FC_1E17 100000000000000000LL +#define FC_1E18 1000000000000000000LL + #define STRERROR(no) (strerror(no) != NULL ? strerror(no) : "Unkown error") #if defined(OS_LINUX) diff --git a/src/shared_func.c b/src/shared_func.c index 85ab39b..529505e 100644 --- a/src/shared_func.c +++ b/src/shared_func.c @@ -4060,3 +4060,106 @@ int fc_safe_write_file_init(SafeWriteFileInfo *fi, fi->fd = -1; return 0; } + +int fc_itoa(int64_t n, char *buff) +{ + char *p; + int start; + int len; + int i; + + if (n < 0) { + n *= -1; + *buff = '-'; + start = 1; + } else { + start = 0; + } + + if (n < FC_1E16) { + if (n < FC_1E08) { + if (n < FC_1E04) { + p = buff + start; + if (n < FC_1E02) { + if (n < FC_1E01) { + *p++ = '0' + n; + } else { + *p++ = '0' + n / 10; + *p++ = '0' + n % 10; + } + } else { + if (n < FC_1E03) { + *p++ = '0' + n / 100; + } else { + *p++ = '0' + n / 1000; + *p++ = '0' + (n % 1000) / 100; + } + *p++ = '0' + (n % 100) / 10; + *p++ = '0' + n % 10; + } + return p - buff; + } else { + if (n < FC_1E06) { + if (n < FC_1E05) { + len = 5; + } else { + len = 6; + } + } else { + if (n < FC_1E07) { + len = 7; + } else { + len = 8; + } + } + } + } else { + if (n < FC_1E12) { + if (n < FC_1E10) { + if (n < FC_1E09) { + len = 9; + } else { + len = 10; + } + } else { + if (n < FC_1E11) { + len = 11; + } else { + len = 12; + } + } + } else { + if (n < FC_1E14) { + if (n < FC_1E13) { + len = 13; + } else { + len = 14; + } + } else { + if (n < FC_1E15) { + len = 15; + } else { + len = 16; + } + } + } + } + } else { + if (n < FC_1E18) { + if (n < FC_1E17) { + len = 17; + } else { + len = 18; + } + } else { + len = 19; + } + } + + p = buff + start + len - 1; + for (i=0; i