In einem gescannten Sechskunzeln (SCANF) von einem nicht signierten Int-Array in Dezimalstellen konvertieren

StackOverflow https://stackoverflow.com/questions/9033840

  •  14-11-2019
  •  | 
  •  

Frage

Ich versuche hier, 4-stellige Hexa in Dec umzuwandeln, aber nicht erfolgreich. Hier ist ein mein Code. generasacodicetagpre.

Ich weiß nicht, was mit ihm los ist, aber es würde einfach nicht den richtigen DEC-Ausgang geben. Wenn ich in EEFF eingesetzte, soll es 61183 geben, aber das Programm wird auf dem Druck von 65518 gehalten.

Wo ist diese Nummer von? Was ist los mit meinem Code? Ich habe gemäß meiner Berücksichtigung unsigniert in der FFFF gleichgestellt, dass FFFF gleich auf 65385 ist, und der Bereich für den unsignierter Int beträgt 0 bis 65535. Mit dem Datenbereich sollte es kein Problem geben, und ich habe auch% u damit verwendet.

Das einzige, was ich mir jetzt nachdenken kann, nachdem ich etwas gesucht habe, ist, dass dieses Problem möglicherweise mit der Größe der nicht signierten Int int oder etw zu tun hat. Ich habe die Erklärung gelesen, aber nicht ganz verstanden.

Ich weiß, das könnte eine Vervielfältigung sein, aber ich bittete hier um eine leichtere Erklärung Warum funktioniert das nicht? Um ehrlich zu sein, bin ich für diese Site und der Programmierung absolut newby, also gehe mir bitte einfach mit der Codierung einfach. FYI, ich weiß nichts außerhalb von stdio.h.

War es hilfreich?

Lösung

You are passing a pointer, array, to printf(). There is no need for an array here, what you're trying to scan and print is a single number.

unsigned int number;

printf("Type in 4-digit hex:\n");

if (scanf("%x", &number) == 1)
  printf("Your number in dec is %u \n", number);

Also note that it's considered a good idea to check if scanf() succeeds or not, by inspecting the return value.

Andere Tipps

You don't need an array for that:

unsigned int val;
printf("Type in 4-digit hexa: \n");
scanf("%x", &val);
printf("Your number in dec is %u \n", val);

a. print array[0], not array.

(optional) b. scan to array, not to &array.

c. what is the point of the getchar()?

No, you must input as string to a point of characters. After that, you convert to number. Ex

char *str=char[10];
int i=0,num=0;
printf("Type in 4-digit hexa: ");
scanf("%s",str);

for(i=0;str[i]!='\0';i++)
   if(str[i]>='0' && str[i]<='9') num=16*num+str[i]-'0';
   else if(str[i]>='a' && str[i]<='f') num=16*num+str[i]-'a';
   else if(str[i]>='A' && str[i]<='F') num=16*num+str[i]-'A';

printf("Dec is %d",num);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top