如何将 const char* 转换为 uint16_t 八进制 (C/C++)

How to convert const char* to uint16_t octal (C/C++)

我需要将前导零的值转换为八进制。因为12(14八进制)和012(10八进制)不同

我要调用的函数需要一个 uint16_t 类型的变量,要转换的值是动态接收的,可以存储在 String 或 const char* 中。

String node = "012"; // received dynamically

const char* node = '012'; // received dynamically

我需要的是: uint16_t n = node;

函数:

begin(uint8_t _channel, uint16_t _node_address )

begin(90, n);

unsigned strToInt(const char *str, int base)
{
    const char digits[] = "01234567890ABCDEF";
    unsigned result = 0;

    while(*str)
    {
        result *= base;
        result += strchr(digits, *str++) - digits;
    }
    return result;
}