/*----------------------------------------- * 100の位を文字へ変換 *--------------------------------------*/ static char *process_100(char num, int *p_flag, char *p_str) { char remainder_100 = num % 100; p_str[*p_flag] = ASCII_CODE_0 + 1; (*p_flag)++; return process_10(remainder_100, p_flag, p_str); }
/*----------------------------------------------------- * 100の位を文字へ *---------------------------------------------------*/ static char *process_100(int8_t num, int *p_flag, char *p_str) { int8_t remainder_100 = num % 100; p_str[*p_flag] = ASCII_NUMBER_0 + 1; (*p_flag)++; return process_10(remainder_100, p_flag, p_str); }
/*===================================================== * @brief * char型の数値を文字列へ変換 * @param * num:変換したい数値 * @return * str:変換した文字列を格納した配列へのポインタ * @note * -128 ~ 127の数値 *===================================================*/ char *char_number_to_string(char num) { static char str[5]; int flag = 0; char *p_error_message = "size of number is over"; /* num == -128 process */ if(num == INT8_T_MINIMUM) { str[0] = '-'; str[1] = '1'; str[2] = '2'; str[3] = '8'; str[4] = '\0'; return str; } /* For negetive number process */ if(num < 0) { str[flag] = '-'; flag++; num *= (-1); } /* converting process */ if(MIN_100 <= num && num <= MAX_100) { return process_100(num, &flag, str); } else if(MIN_10 <= num && num <= MAX_10) { return process_10(num, &flag, str); } else if(MIN_1 <= num && num <= MAX_1) { return process_1(num, &flag, str); } else { return p_error_message; } }