A 12 byte string which represents 6 hexadecimal values, needs to be converted to an std:array<uint8_t,6>
. I am getting erroneous results from the hexadecimal conversions. I re-purposed some of the code over here for the Hex conversions from a string. Thank you for your time
Code
std::vector<std::array<uint8_t,6> > tracker =
{
{ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66 },
{ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99 }
};
std::array<uint8_t, 6> singular= { 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 };
void setMac() {
Serial.println("MAC TEST 1");
std::string macInput = "121212121212";
macTrans(macInput);
tracker.push_back(singular);
for (const auto& target : tracker)
{
printf("%02x:%02x:%02x:%02x:%02x:%02x\n", target[0], target[1], target[2], target[3], target[4], target[5]);
}
}
void macTrans(std::string mac){
singular = HexToBytes(mac);
}
std::array<uint8_t,6> HexToBytes(const std::string& hex) {
std::array<uint8_t,6> bytes;
for (unsigned int i = 0; i < hex.length() && i < 12; i += 2) {
std::string byteString = hex.substr(i, 2);
uint8_t byte = (unsigned char) strtol(byteString.c_str(), NULL, 16);
if (i==0)
bytes[0] = byte;
else
bytes[i-1] = byte;
}
return bytes;
}
Current Output:
MAC TEST 1
66:66:66:66:66:66
99:99:99:99:99:99
12:12:30:12:fe:12
Expected Output:
MAC TEST 1
66:66:66:66:66:66
99:99:99:99:99:99
12:12:12:12:12:12