How to convert a MAC address string into a vector of uint8_t in C++

1 Answer

0 votes
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;
using std::string;

void print(const vector<uint8_t>& vec) {
    for (const auto& element : vec) {
        cout << element << " ";
    }
    cout << endl;
}
 
void parse_mac_address(std::vector<uint8_t>& result, string const& MACaddress) {
    unsigned int bytes[6];
    
    if (std::sscanf(MACaddress.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(MACaddress + std::string(" is an invalid MAC address"));
    }
    
    result.assign(&bytes[0], &bytes[6]);
}
 
int main()
{
    string MACaddress = "00:E6:45:84:C2:26";
    
    vector<uint8_t> result;
    
    parse_mac_address(result, MACaddress);
    
    print(result);
}
 
 
 
/*
run:
 
 � E � � & 
 
*/

 



answered May 31, 2024 by avibootz
...