1、使用sscanf把字符串16进制0xxxxx强转为uint16_t 可能出现 ”已放弃(核心已转储)“,即使字符串16进制0xxxxx未超出uint16_t 的范围(0到65535)。
first="0xf008";
uint16_t first_int = 0;
sscanf(first.c_str(),"0x%x",&first_int);
原因是:sscanf未知first 是16还是32位 ,因此统一按照32位去格式化赋值给到first_int,而first_int 16位 导致内存溢出。这种情况只会出现在uint16_t first_int = 0; 作为类成员变量的时候,释放出现核心转储。