看了ST官方例程的一个 Str2Int() 函数,添加了几行中文注释。特色之处是将十进制可能带k、M的地方作了处理。
/**
* @brief Convert a string to an integer
* @param inputstr: The string to be converted
* @param intnum: The intger value
* @retval 1: Correct
* 0: Error
*/
uint32_t Str2Int(uint8_t *inputstr, int32_t *intnum)
{
uint32_t i = 0, res = 0;
uint32_t val = 0;
if (inputstr[0] == '0' && (inputstr[1] == 'x' || inputstr[1] == 'X'))
{ // 16进制的字符处理
if (inputstr[2] == '\0')
{ // 字符串="0x"或"0X",Error
return 0;
}
// 16进制字符串最多有10个字符外加1个结束符
// 假设:inputstr[] ="0x12345678"
// 则 inputstr[0] = '0', inputstr[1] = 'x'
// 则 inputstr[2] = '