将字符串转换为字节(unsigned char)数组cpp

Shr*_*han 1 c++ hex

这个简单的问题真的遇到了麻烦.我有一个像这样的字符串:

std::string msg = "00 00 00 00 00 06 01 05 00 FF 00 00";
Run Code Online (Sandbox Code Playgroud)

我想:

unsigned char bbuffer[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x05, 0x00, 0xFF, 0x00, 0x00 };
Run Code Online (Sandbox Code Playgroud)

这是怎么做的?

Jer*_*fin 7

如果可能的话,我建议使用std::vector<unsigned char>而不是实际的数组.

使用它,我想我会做这样的事情:

std::istringstream buffer(msg);

std::vector<unsigned char> bbuffer;

unsigned int ch;
while (buffer >> std::hex >> ch)
    bbuffer.push_back(ch);
Run Code Online (Sandbox Code Playgroud)

如果你真的坚持阵列,你可以这样做:

std::istringstream buffer(msg);

char bbuffer[12];

unsigned int ch;
for (int i=0; buffer >> std::hex >> ch; i++)
    bbuffer[i] = ch & 0xff;
Run Code Online (Sandbox Code Playgroud)

但矢量通常是优选的.

  • 我太近了!我下次会帮你的;) (2认同)