1

この単純な問題に本当に問題があります。次のような文字列があります。

std::string msg = "00 00 00 00 00 06 01 05 00 FF 00 00";

私がしたいこと:

unsigned char bbuffer[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x05, 0x00, 0xFF, 0x00, 0x00 };

それを行う方法は何ですか?

4

1 に答える 1

7

可能であればstd::vector<unsigned char>、実際の配列の代わりに a を使用することをお勧めします。

それを使って、私は次のようなことをすると思います:

std::istringstream buffer(msg);

std::vector<unsigned char> bbuffer;

unsigned int ch;
while (buffer >> std::hex >> ch)
    bbuffer.push_back(ch);

あなたが本当に配列を主張するなら、次のようなことができます:

std::istringstream buffer(msg);

char bbuffer[12];

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

ただし、通常はベクターの方が適しています。

于 2013-07-13T03:50:57.947 に答える