我想从命令行读取 mac id 并将其转换为数组uint8_t
在结构中使用它的值。我无法让它工作。我有一个 mac id 分割的字符串向量:
我想用stringstream
转换他们没有运气。我缺少什么?
int parseHex(const string &num){
stringstream ss(num);
ss << std::hex;
int n;
ss >> n;
return n;
}
uint8_t tgt_mac[6] = {0, 0, 0, 0, 0, 0};
v = StringSplit( mac , ":" );
for( int j = 0 ; j < v.size() ; j++ ){
tgt_mac[j] = parseHex(v.at(j));
}
我讨厌以这种方式回答这个问题,但是sscanf()
可能是解析 MAC 地址的最简洁的方法。它处理零/非零填充、宽度检查、大小写折叠以及所有其他没人喜欢处理的东西。无论如何,这是我的不太 C++ 版本:
void
parse_mac(std::vector<uint8_t>& out, std::string const& in) {
unsigned int bytes[6];
if (std::sscanf(in.c_str(),
"%02x:%02x:%02x:%02x:%02x:%02x",
&bytes[0], &bytes[1], &bytes[2],
&bytes[3], &bytes[4], &bytes[5]) != 6)
{
throw std::runtime_error(in+std::string(" is an invalid MAC address"));
}
out.assign(&bytes[0], &bytes[6]);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)