Reputation: 1460
having real trouble with this simple issue. I have a string like this:
std::string msg = "00 00 00 00 00 06 01 05 00 FF 00 00";
which i would like to:
unsigned char bbuffer[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x05, 0x00, 0xFF, 0x00, 0x00 };
what is the way to do it?
Upvotes: 1
Views: 8489
Reputation: 490108
If at all possible, I'd advise using a std::vector<unsigned char>
instead of an actual array.
Using that, I guess I'd do something like this:
std::istringstream buffer(msg);
std::vector<unsigned char> bbuffer;
unsigned int ch;
while (buffer >> std::hex >> ch)
bbuffer.push_back(ch);
If you really insist on the array, you could do something like:
std::istringstream buffer(msg);
char bbuffer[12];
unsigned int ch;
for (int i=0; buffer >> std::hex >> ch; i++)
bbuffer[i] = ch & 0xff;
But the vector is usually preferable.
Upvotes: 7