#include <iostream>
int main()
{
char str[] = "3F4C5D026611, 3F4C5D026622, 3F4C5D026633";
union address
{
uint64_t ull;
uint8_t bytes[8];
};
address addresses[12];
char * ptr = str;
uint8_t counter = 0;
while( *ptr && counter < 12 )
{
addresses[counter++].ull = strtoull( ptr, &ptr, 16 );
if ( *ptr ) ptr++; // if end of string not reached, increase pointer to skip ','
}
for ( uint8_t i = 0; i < counter; i++ )
{
address * a = &addresses[i];
printf( "address %hhu = %02X:%02X:%02X:%02X:%02X:%02X\n",
i,
a->bytes[5],
a->bytes[4],
a->bytes[3],
a->bytes[2],
a->bytes[1],
a->bytes[0]
);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCmludCBtYWluKCkKewoJY2hhciBzdHJbXSA9ICIzRjRDNUQwMjY2MTEsIDNGNEM1RDAyNjYyMiwgM0Y0QzVEMDI2NjMzIjsKCgl1bmlvbiBhZGRyZXNzCgl7CgkJdWludDY0X3QgdWxsOwoJCXVpbnQ4X3QgYnl0ZXNbOF07Cgl9OwoJCglhZGRyZXNzIGFkZHJlc3Nlc1sxMl07CgkKCQoJY2hhciAqIHB0ciA9IHN0cjsKCXVpbnQ4X3QgY291bnRlciA9IDA7CgkKCXdoaWxlKCAqcHRyICYmIGNvdW50ZXIgPCAxMiApCgl7CgkJYWRkcmVzc2VzW2NvdW50ZXIrK10udWxsID0gc3RydG91bGwoIHB0ciwgJnB0ciwgMTYgKTsKCQlpZiAoICpwdHIgKSBwdHIrKzsgLy8gaWYgZW5kIG9mIHN0cmluZyBub3QgcmVhY2hlZCwgaW5jcmVhc2UgcG9pbnRlciB0byBza2lwICcsJwoJfQoJCgkKCWZvciAoIHVpbnQ4X3QgaSA9IDA7IGkgPCBjb3VudGVyOyBpKysgKQoJewoJCWFkZHJlc3MgKiBhID0gJmFkZHJlc3Nlc1tpXTsKCQlwcmludGYoICJhZGRyZXNzICVoaHUgPSAlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwKCQkJaSwKCQkJYS0+Ynl0ZXNbNV0sCgkJCWEtPmJ5dGVzWzRdLAoJCQlhLT5ieXRlc1szXSwKCQkJYS0+Ynl0ZXNbMl0sCgkJCWEtPmJ5dGVzWzFdLAoJCQlhLT5ieXRlc1swXQoJCSk7Cgl9CgkKCQoJcmV0dXJuIDA7Cn0=