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