C++ 十六进制字符串到字节c++;

C++ 十六进制字符串到字节c++;,c++,string,hex,byte,C++,String,Hex,Byte,我正在尝试将十六进制字符串转换为 std::string mystring = "00A4040C06FF5142534014"; 以以下形式转换为字节: BYTE cmd2[] = {0x00, 0xA4, 0x04, 0x0C, 0x06, 0xFF, 0x51, 0x42, 0x53, 0x40, 0x14}; 我尝试使用以下功能: std::vector<char> HexToBytes(const std::string& hex) { std::vec

我正在尝试将十六进制字符串转换为

std::string mystring = "00A4040C06FF5142534014";
以以下形式转换为字节:

BYTE cmd2[] = {0x00, 0xA4, 0x04, 0x0C, 0x06, 0xFF, 0x51, 0x42, 0x53, 0x40, 0x14};
我尝试使用以下功能:

std::vector<char> HexToBytes(const std::string& hex)
{
    std::vector<char> bytes;
    for (unsigned int i = 0; i < hex.length(); i += 2) {
        std::string byteString = hex.substr(i, 2);
        char byte = (char) strtol(byteString.c_str(), NULL, 16);
        bytes.push_back(byte);
    }

    return bytes;
}
std::vector HexToBytes(const std::string&hex)
{
std::向量字节;
for(无符号整数i=0;i

但这并没有给我正确的转换。也许有人能帮我一下?

没有从
std::vector
const unsigned char*
的隐式转换

std::vector HexToBytes(const std::string&hex)
{
std::向量字节;
...
auto cmd=HexToBytes(mystring);
rv=SCardTransmit(hCard,&pioSendPci,&cmd[0],cmd.size(),NULL,pbRecvBuffer,&dwRecvLength);

您得到了什么结果?您是否尝试在调试器中逐个语句地检查代码语句以查看发生了什么情况?“这没有给我正确的转换”-它给了你什么,你是如何验证的?我怀疑你使用标准的
char
而不是
unsigned char
,因为你的八进制目标可能会给你一些你不期望的东西。什么是“正确的转换?”,代码按原样工作,到目前为止没有问题。该错误与此转换无关。它必须被删除o尝试将
std::vector
参数传递给需要
LPCBYTE
参数的函数。