だから私はこれにかなりイライラしており、私が間違っていることを正確に理解する唯一の方法は、あなたの素晴らしい人々に尋ねることだと感じています. 文字列 (数値を含む) を 16 進数に変換しようとしています。これが私のコードです(注、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 の 16 進値を返しますが、これも明らかに間違っています。助けていただければ幸いです。8進数でもこれを行う必要があるため、この概念を理解し、何が間違っているのかを確認する必要があります。