无法计算出 C 中指针的十六进制转换

标签 c pointers hex decimal atoi

所以我对此感到非常沮丧,我觉得唯一能弄清楚我做错了什么的方法就是问问你们这些好人。我正在尝试将一串字符(包含数值)转换为十六进制。这是我的代码(请注意,我还没有将 10-15 的开关设置为字母;我只是想确保在运行此代码时我得到的是整数值……运气不好):

void toHex(char *inString){
    char *charVal = inString;
    char decVal[100];

    for(int i = 0; decVal[i] != '\0'; i++){
        decVal[i] = *charVal;
        charVal++;
    }

    char storeMod[100];
    int i = 0;
    int testVal = atoi(decVal);

    for(i; testVal >= 16; i++){
        int a = testVal;
        testVal = testVal/16;
        storeMod[i] = a;
    }

   int a = 0;
   char hexval[100];
   hexVal[0] = '0';
   hexVal[1] = 'x';
   for(int j = i+2; j>=2; j--){
       hexVal[j] = storeMod[a];
       a++;
   }

   printf("%s hex valu\n", hexVal);
   return;
}

例如,输入 300 返回 ,@

我也试过:

char hexVal[100];
sprintf(hexVal,"%x",*inString);
strcpy(instring,hexVal);

对于 300 返回一个十六进制值 3fa844e0,这显然也是错误的。感谢任何帮助,我也需要为八进制做这件事,所以我必须弄清楚这个概念,看看我做错了什么。

最佳答案

代替:

sprintf(hexVal,"%x",*inString);

使用:

sprintf(hexVal, "%x", atoi(inString));

关于无法计算出 C 中指针的十六进制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082569/

相关文章:

c - (int (*)[30]) 中的 (*) 是什么意思?

c++ - 为什么 GNU Readline 会弄乱 ANSI 颜色代码?

c - 更新函数中的字符串数组 - C

c++ - 指针运算和继承导致未定义的行为

c - make 运行时出错。冲突的类型和先前的声明

c - 使用按位或时读取无效

c - C中纠结的句法位

c - 在 C 中如何将字节数组转换为十六进制字符串?

python - 将十六进制数字相加而不转换基数?

C HEX 存储、显示和操作