我有一个字符串(std::string
),其中包含一个C ++中的MAC地址,例如:
10:10:0F:A0:01:00
我需要将其转换为字节数组(unsigned char*
)。
必须从左到右写入字节。有没有人有这个功能或有效的算法?
答案 0 :(得分:0)
这个都行。您已将其标记为C ++,因此我严格遵循使用sscanf
C方法可能的更短解决方案。此处using namespace std
仅用于缩短引用的代码。
#include <iostream>
#include <sstream>
main() {
unsigned char octets[6];
unsigned int value;
char ignore;
using namespace std;
istringstream iss("10:10:0F:A0:01:00",istringstream::in);
iss >> hex;
for(int i=0;i<5;i++) {
iss >> value >> ignore;
octets[i]=value;
}
iss >> value;
octets[5]=value;
// validate
for(int i=0;i<sizeof(octets)/sizeof(octets[0]);i++)
cout << hex << static_cast<unsigned int>(octets[i]) << " ";
cout << endl;
}
答案 1 :(得分:0)
很遗憾,但是为了帮助仍然在寻找答案的其他人,有一种标准的C方式仍然可以在C ++中使用,而无需重新发明轮子。只需man ether_aton
或单击here。