我下面有一个IPV6字符串作为示例:
"0001:0002:0003:0004:0005:0006:0007:0008"
[我正在尝试找到最干净的方法将其转换为包含1-8的8个值的uint16_t数组。
我无法使用inet_pton()
我可以创建自己的解析函数,但是我试图让sscanf如下工作而没有成功。任何帮助,将不胜感激。编辑:值将始终以十六进制格式表示在字符串中。
char *pString = "0001:0002:0003:0004:0005:0006:0007:0008";
uint16_t* uintValues = new uint16_t[8]{};
sscanf(pString,"%s%04x:", uintValues );
istringstream in("0001:0002:0003:0004:0005:0006:0007:0008");
uint16_t[8] out;
char colon;
in >> out[0] >> colon >> out[1] >> colon >> out[2] >> colon >> out[3] >> colon >> out[4] >> colon >> out[5] >> colon >> out[6] >> colon >> out[7];
完全没有错误检查,可能有问题也可能没有问题。