C中无符号int到const char*

C中无符号int到const char*,c,type-conversion,C,Type Conversion,我正在使用一个函数来接收常量char* long hex2long(const char* hexString) 我有一个无符号整数格式的十六进制字符串,需要将其转换为const char*才能使用该函数 我也尝试过使用strtol(),但也是同样的问题 有什么想法吗 这就是功能: static const long hextable[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -

我正在使用一个函数来接收常量char*

long hex2long(const char* hexString)
我有一个无符号整数格式的十六进制字符串,需要将其转换为const char*才能使用该函数

我也尝试过使用strtol(),但也是同样的问题

有什么想法吗

这就是功能:

static const long hextable[] = 
{
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 10-19
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 30-39
        -1, -1, -1, -1, -1, -1, -1, -1,  0,  1,
         2,  3,  4,  5,  6,  7,  8,  9, -1, -1,         // 50-59
        -1, -1, -1, -1, -1, 10, 11, 12, 13, 14,
        15, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 70-79
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, 10, 11, 12,         // 90-99
        13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 110-109
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 130-139
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 150-159
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 170-179
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 190-199
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 210-219
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 230-239
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1
};


long hex2long(const char* hexString)
{
        long ret = 0; 

        while (*hexString && ret >= 0) 
        {
                ret = (ret << 4) | hextable[*hexString++];
        }

        return ret; 
}
static const long hextable[]
{
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 10-19
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 30-39
-1, -1, -1, -1, -1, -1, -1, -1,  0,  1,
2,  3,  4,  5,  6,  7,  8,  9, -1, -1,         // 50-59
-1, -1, -1, -1, -1, 10, 11, 12, 13, 14,
15, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 70-79
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 10, 11, 12,         // 90-99
13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 110-109
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 130-139
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 150-159
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 170-179
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 190-199
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 210-219
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,         // 230-239
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1
};
长hex2long(常量字符*十六进制字符串)
{
长ret=0;
while(*hextstring&&ret>=0)
{

ret=(ret您的问题很混乱。您的函数解析数字的十六进制表示形式,并以
long
的形式返回值。遇到非十六进制数字时应停止解析,并且可以忽略任何前导空格字符。库函数
strtol()
就是这样做的,最后一个参数(转换基数)的值为
16


您还想实现什么?

您可以使用无符号整数作为参数,无需进行转换,例如:long hex2long(unsigned int hexString)我有一个无符号整数格式的十六进制数,想把它转换成十进制格式。哦,我知道你需要一个数字字符串,只要用一个无符号整数数组作为你的参数就可以了