简体   繁体   中英

converting a string to byte (unsigned char) array cpp

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?

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM