在C ++中将十六进制字符串转换为字节

时间:2015-12-19 13:42:56

标签: c++

我有一个十六进制字符串,如下所示:

char hexString = "1a";

我希望将其转换为BYTE,因此它看起来像这样:

BYTE Anything[0x10] = { 0x1a };
收敛后

。 我需要为16个字符串执行此操作,以便我在最后看起来像这样

BYTE Anything[0x10] = { hexToByte(hexString1), hexToByte(hexString2), 16 times };

任何想法,因为我不知道如何做到这一点!

2 个答案:

答案 0 :(得分:1)

BYTE Anything[0x10] = {
    (BYTE)std::stoul(hexString1, nullptr, 16),
    (BYTE)std::stoul(hexString2, nullptr, 16), ... };

答案 1 :(得分:0)

只有256个值......足够小,可以在数组中查找。

int hexToByte(const char* strHex)
{
   char* array[] = {"00", "01", "02", "03", "04", "05", "06", "07",
                    "08", "09", "0A", "0B", "0C", "0D", "0E", "0F",
                    "10", "11", "12", "13", "14", "15", "16", "17",
                    "18", "19", "1A", "1B", "1C", "1D", "1E", "1F"
                   /* Fill in the rest, up to FF */};

    int i;              
    for(i=0; strcmp(strHex,array[i]); ++i) ;

    return i;
}