C++ 如何将一组十六进制字符串转换为字节数组

C++ 如何将一组十六进制字符串转换为字节数组,c++,C++,我输入了char*str=“13 00 0A 1B CA 00” 我需要一个输出为BYTE bytes[]={0x13,0x00,0x0A,0x1B,0xCA,0x00} 有人能帮忙解决吗?您需要解析出这两个字符中的每一个,然后将它们转换成字节。这并不是很难做到 std::stringstream converter; std::istringstream ss( "13 00 0A 1B CA 00" ); std::vector<BYTE> bytes; std::string

我输入了char
*str=“13 00 0A 1B CA 00”

我需要一个输出为
BYTE bytes[]={0x13,0x00,0x0A,0x1B,0xCA,0x00}


有人能帮忙解决吗?

您需要解析出这两个字符中的每一个,然后将它们转换成
字节。这并不是很难做到

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 );
}
std::stringstream转换器;
标准:istringstream ss(“13 00 0A 1B CA 00”);
std::向量字节;
字符串字;
while(ss>>word)
{
字节温度;
转炉温度;
字节。推回(临时);
}

这个答案假设输入格式实际上是每个十六进制字节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
std::向量字节;
char*str=“13 00 0A 1B CA 00”;
std::字符串输入(str);
size\u t count=input.size()/3;
对于(大小i=0;i
sscanf
可能有效,但他可能不知道字符串中的确切字节数,因此他需要更动态的方法。sscanf不安全,它会导致“缓冲区溢出”。在标准库中使用哪一个C++编译器,它具有一个名为HythyStRigutotoIt的函数?对不起,这不是我所要的,我将改变它。我不太明白这个,请你详细解释一下我的字符串是“XX XX XX XX”格式,StruScript是否与空格?Type无符号短字节一起工作;实际上,字节的
计数是
(input.size()+1)/3
。您的代码将丢失输入字符串中的最后一个字节。