char の入力があります*str = "13 00 0A 1B CA 00";
次の出力が必要ですBYTE bytes[] = { 0x13, 0x00, 0x0A, 0x1B, 0xCA, 0x00 };
誰かが解決策を手伝ってくれますか?
char の入力があります*str = "13 00 0A 1B CA 00";
次の出力が必要ですBYTE bytes[] = { 0x13, 0x00, 0x0A, 0x1B, 0xCA, 0x00 };
誰かが解決策を手伝ってくれますか?
2つの文字をそれぞれ解析してから、に変換する必要がありますBYTE
。これを行うのはそれほど難しいことではありません。
std::stringstream converter;
std::istringstream ss( "13 00 0A 1B CA 00" );
std::vector<BYTE> bytes;
std::string word;
while( ss >> word )
{
BYTE temp;
converter << std::hex << word;
converter >> temp;
bytes.push_back( temp );
}
この回答では、入力形式が実際には 16 進バイトごとに 3 文字であると想定しています。sscanf
簡単にするために使用しましたstreams
が、明らかにオプションでもあります。
std::vector<BYTE> bytes;
char *str = "13 00 0A 1B CA 00";
std::string input(str);
size_t count = input.size()/3;
for (size_t i=0; i < count; i++)
{
std::string numStr = input.substr(i*3, input.find(" "));
int num=0;
sscanf(numStr.c_str(), "%x", &num);
bytes.push_back((BYTE)num);
}
// You can access the output as a contiguous array at &bytes[0]
// or just add the bytes into a pre-allocated buffer you don't want vector