所以我对这件事很失望,我觉得唯一能弄清楚我到底做错了什么的方法就是问你好人。我正在尝试将字符串(包含数值)转换为十六进制。这是我的代码(注意,我还没有把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));

08-27 21:37