读取String类型0x11,0x12赋值给char

#include <iostream>
#include<vector>
int ATOI(const char* str);
void Trim(std::string& value);
void SplitNumsByStr(const char* s, std::vector<unsigned char >& v);

struct TypeFunc
{
    unsigned char typeCode;
    unsigned char functionCode;
};
int main()
{
    TypeFunc typeFunc;
    std::string a="0x12,0x11";
    std::vector<unsigned char> v;
    SplitNumsByStr(a.c_str(), v);
    typeFunc.functionCode=v[0];
    typeFunc.typeCode=v[1];
    std::cout<<int(typeFunc.functionCode)<<std::endl;
    std::cout<<int(typeFunc.typeCode)<<std::endl;
    return true;



}

void SplitNumsByStr(const char* s, std::vector<unsigned char >& v)
{
    int strLen = strlen(s);
    std::string s2;
    for(int i=0; i<strLen; i++)
    {
        if(s[i] == ',')
        {
            Trim(s2);
            if(s2 != "")
            {
                unsigned char  n = ATOI(s2.c_str());
                v.push_back(n);
                s2 = "";
            }
        }
        else
            s2 += s[i];
    }

    Trim(s2);
    if(s2 != "")
    {
        unsigned char n = ATOI(s2.c_str());
        v.push_back(n);
        s2 = "";
    }
}

void Trim(std::string& value)
{
    int i,j;
    char blank = ' ';
    char tab = '	';
    for(i=0; i<value.size(); i++)
    {
        if(value[i] != blank && value[i] != tab && value[i] != 0x0d && value[i] != 0x0a)
            break;
    }
    if(i != value.size())
    {
        for(j=value.size()-1; j>=0; j--)
        {
            if(value[j] != blank && value[j] != tab && value[j] != 0x0d && value[j] != 0x0a)
                break;
        }
    }
    if(i == value.size())
        value = "";
    else if(i != 0 || j != value.size() - 1)
        value = value.substr(i, j-i+1);
}

int ATOI(const char* str)
{
    if (strlen(str) <= 1)
    {
        return atoi(str);
    }
    if ((str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) ||
        (str[strlen(str)-1] == 'h' || str[strlen(str)-1] == 'H'))
    {
        int i;
        sscanf(str, "%x", &i);
        return i;
    }
    else
    {
        return atoi(str);
    }
}

 


版权声明:本文为WYYwyy1111原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。