所以我对此感到非常沮丧,并且觉得弄清楚我做错了什么的唯一方法就是问你们这些好人。我正在尝试将一串字符(包含数值)转换为十六进制。这是我的代码(请注意,我还没有将 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 ,这显然也是错误的。任何帮助表示赞赏,我也需要对八进制执行此操作,因此我必须弄清楚这个概念并看看我做错了什么。