it-swarm.com.de

Konvertieren einer Dezimalzahl in eine Hexadezimalzahl

Warum verwenden wir + 55 zum Konvertieren von Dezimalzahlen in Hex-Zahlen. In diesem Code verwenden wir +48, ​​um Ganzzahl in Zeichen umzuwandeln. wenn die Temperatur <10 ist. Bei Temp> = 10 verwenden wir +55. was bedeutet das mit +55?

#include<stdio.h>
int main(){
    long int decimalNumber,remainder,quotient;
    int i=1,j,temp;
    char hexadecimalNumber[100];

    printf("Enter any decimal number: ");
    scanf("%ld",&decimalNumber);

    quotient = decimalNumber;

    while(quotient!=0){
         temp = quotient % 16;

      //To convert integer into character
      if( temp < 10)
           temp =temp + 48;
      else
         temp = temp + 55;

      hexadecimalNumber[i++]= temp;
      quotient = quotient / 16;
  }

    printf("Equivalent hexadecimal value of decimal number %d: ",decimalNumber);
    for(j = i -1 ;j> 0;j--)
      printf("%c",hexadecimalNumber[j]);

    return 0;
}
4
MD MAHBUB ALAM

In einer ASCII-Umgebung ist 55 gleich 'A' - 10. Dies bedeutet, dass das Hinzufügen von 55 dasselbe ist wie das Subtrahieren von 10 und das Hinzufügen von 'A'.

In ASCII sind die Werte von 'A' bis 'Z' benachbart und sequentiell. Daher werden 10 zu 'A', 11 zu 'B' usw. zugeordnet. 

8
caf

Für Werte von temp kleiner als 10 ist der entsprechende ASCII-Code 48 + temp:

0 => 48 + 0 => '0'
1 => 48 + 1 => '1'
2 => 48 + 2 => '2'
3 => 48 + 3 => '3'
4 => 48 + 4 => '4'
5 => 48 + 5 => '5'
6 => 48 + 6 => '6'
7 => 48 + 7 => '7'
8 => 48 + 8 => '8'
9 => 48 + 9 => '9'

Bei einem Wert von 10 oder höher ist der entsprechende letter 55 + temp:

10 => 55 + 10 => 'A'
11 => 55 + 11 => 'B'
12 => 55 + 12 => 'C'
13 => 55 + 13 => 'D'
14 => 55 + 14 => 'E'
15 => 55 + 15 => 'F'
5
John

Wegen der ASCII -Codierung der Zeichen in C. Wenn der Rest (temp) weniger als zehn ist, liegt die Ziffer im Hexadezimalzeichen ebenfalls im Bereich von 0 bis 9. Die Zeichen '0' bis '9 'liegen im Bereich ASCII von 48 bis 57. 

Wenn der Rest mehr als 10 ist (und aufgrund der Restoperation % immer weniger als 15), liegt die hexadezimale Ziffer im Bereich A bis F, die in ASCII im Bereich von 65 bis 70 liegt. temp + 55 ist also eine Zahl von 65 bis 70 und gibt somit ein Zeichen im Bereich von 'A' bis 'F'.

Es ist üblicher, einen String char[] digits = "0123456789ABCDEF"; zu verwenden und den Rest als Index in diesem String zu verwenden. Die Methode in Ihrer Frage funktioniert (wahrscheinlich) auch.

4
Kninnug

Hexadezimalzahl ist eine Zahl, die mit 16 Symbolen dargestellt wird, bei denen es sich um 0 -9-Zahlen und A-F-Alphabete handelt. Um ein c-Programm zum Konvertieren der Dezimalzahl in Hexadezimal zu schreiben, führen Sie folgende Schritte aus: Teilen Sie die Dezimalzahl bei jedem Schritt mit 16 und nehmen Sie die verbleibenden Reste auf

Hier werden für die Reste 0 - 9 Zahlen verwendet, und um 10 bis 15 Zahlen darzustellen, verwenden wir die Alphabete A, B, C, D, E, F. Kombinieren Sie nun alle Reste seriell von unten nach oben, dh A Dies ist die Hexadezimalzahl 10 (dezimal).

zB Um die Dezimalzahl 10 in Hexadezimalzahl umzuwandeln

16 | 10 | 0 - A

Kombinieren Sie nun alle Reste seriell von unten nach oben, d.h. A. Dies ist eine Hexadezimalzahl von 10 (dezimal).

Programmlogik: Geben Sie die Dezimalzahl n ein, dividieren Sie n durch 16 (seit hexadezimal) und speichern Sie den Rest in Array und Quotienten in n repeat, bis n größer als Null ist

programm anzeigen unter: http://www.programmingsimplysolved.com/c-programs/c-program-to-convert-decimal-number-to-hexadecimal-using-functions/

beigetragen von: www.programmingsimplysolved.com