2014-09-26 67 views
0

我有一个字符串(std::string),其含有C++中的MAC地址,例如:转换串MAC地址字节数组

10:10:0F:A0:01:00 

我需要将其转换为一个字节数组(unsigned char*)。

字节必须从左到右写入。有没有人有这个功能或有效的算法?

+1

哈哈@herohuyongtao。我不认为这就是他的意思... – thang 2014-09-26 06:28:10

+0

你可以使用['std :: istringstream'](http://en.cppreference.com/w/cpp/io/basic_istringstream)和'hex' I/O操作符,并使用':'作为分隔符,将等同数字读入6字节的数组中。 – 2014-09-26 06:28:45

+0

好的,对不起,我忘了提及“:” - 字符应该被删除:-) – Crimson 2014-09-26 06:31:06

回答

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; 
} 
相关问题