所以我对此感到非常沮丧,我觉得唯一能弄清楚我做错了什么的方法就是问问你们这些好人。我正在尝试将一串字符(包含数值)转换为十六进制。这是我的代码(请注意,我还没有将 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/