Drucken einen Hexadezimalwert in C

Waqar Aslam 12 Oktober 2023
  1. Ein Überblick über Hexadezimalzahlen in der Programmiersprache C
  2. Formatbezeichner in der Programmiersprache C
  3. Der Prozess der Umwandlung in einen Hexadezimalwert
  4. Implementierung des Druckens von Hexadezimalwerten
  5. Verwenden Sie %x, um den Hexadezimalwert in Kleinbuchstaben in C zu drucken
  6. Verwendung von %X zum Drucken von Hexadezimalwerten in Kleinbuchstaben in C
Drucken einen Hexadezimalwert in C

Dieser Beitrag behandelt das Drucken von Hexadezimalwerten mit der Programmiersprache C.

Ein Überblick über Hexadezimalzahlen in der Programmiersprache C

Eine Hexadezimalzahl ist ein Wert, der aus 16 Symbolen in der Programmiersprache C besteht. Zu diesen Symbolen gehören die zehn normalen Zahlensysteme von 0 bis 9 und die sechs zusätzlichen Symbole von A bis F.

Das hexadezimale Zahlensystem in C wird als Base-16-Zahlensystem bezeichnet. Hexadezimalzahlen können nicht in einem Datentyp wie float, long oder double gespeichert werden; Sie können sie jedoch in einem integralen Datentyp speichern.

Um einen Hexadezimalwert in der Programmiersprache C einzugeben, müssen Sie scanf verwenden, das Formatbezeichner wie %x und %X bereitstellt.

Ein Hexadezimalwert wird in der Programmiersprache C entweder als 0x oder 0X dargestellt. Um eine Ganzzahl im Hexadezimalformat zu drucken, muss der Formatbezeichner %x oder %X innerhalb des Befehls printf() verwendet werden.

Der Wert wird im Hexadezimalformat mit Kleinbuchstaben gedruckt, wenn %x verwendet wird, als (a-f). Der Wert wird im Hexadezimalformat mit Großbuchstaben gedruckt, wenn %X verwendet wird, als (A-F).

Formatbezeichner in der Programmiersprache C

Wenn Sie möchten, dass 0x immer in der Ausgabe enthalten ist, sollten Sie das Symbol # nicht verwenden, da es dazu führt, dass der Ausgabe 0x vorangestellt wird, selbst wenn der Wert 0 ist.

Das Erzeugen führender Nullen kann erreicht werden, indem das Breitenfeld mit den 0-Flags auf folgende Weise kombiniert wird: Der Wert von %08x fügt führende Nullen zu der Ganzzahl hinzu, sodass sie eine Breite von 8 hat.

Es besteht auch die Möglichkeit, das Precision-Feld zu verwenden, das wie folgt lautet: %.8x füllt die Ganzzahl mit führenden Nullen auf insgesamt 8 Stellen auf. Daher ist 0x%.8x eine weitere Option, die Sie für Ihr Ziel in Betracht ziehen sollten.

Wenn bei der Konvertierung ein Präfix gebildet wird, wie z. B. 0x für # oder - für negative ganze Zahlen bei vorzeichenbehafteten Konvertierungen, sind diese Konvertierungsanforderungen anders. Die Länge des Präfixes wird für die Breite gezählt, aber nicht für die Genauigkeitsangabe.

Hier ist ein Beispiel dafür, wie verschiedene Spezifizierer verwendet werden können, um verschiedene Ausgabestile für Hexadezimalzahlen bereitzustellen.

#include <stdio.h>

int main() {
  printf("%10x\n", 252);
  printf("%010x\n", 252);
  printf("%#010x\n", 252);

  printf("%10.8x\n", 252);
  printf("%#10.8x\n", 252);
  printf("0x%.8x\n", 252);

  printf("%10x\n", 0);
  printf("%010x\n", 0);
  printf("%#010x\n", 0);

  printf("%10.8x\n", 0);
  printf("%#10.8x\n", 0);
  printf("0x%.8x", 252);
}

Ausgang:

        fc
00000000fc
0x000000fc
  000000fc
0x000000fc
0x000000fc
         0
0000000000
0000000000
  00000000
  00000000
0x000000fc

Der Prozess der Umwandlung in einen Hexadezimalwert

Schauen wir uns nun an, wie das System diese Konvertierung durchführt, damit wir sie vollständig verstehen können.

  1. Sie müssen zuerst die gelieferte Zahl durch 16 teilen und den Rest der Operation notieren.
  2. Fahren Sie mit Schritt 1 fort, bis der Quotient gleich 0 ist.
  3. Kombinieren Sie die restlichen Komponenten in der umgekehrten Reihenfolge, in der sie erworben wurden.

Implementierung des Druckens von Hexadezimalwerten

Wenn wir zum Beispiel in diesem Beispiel 252 durch 16 teilen, erhalten wir 15 als Quotient und 12 als Rest. Jetzt teilen wir 15 durch 16; Der Quotient ist 0, während der Rest 15 ist.

Es ist wichtig zu beachten, dass der resultierende Quotient 0 ist, wenn 15 durch 16 geteilt wird. Hier hören wir also mit der Berechnung auf.

Die beiden Reste, die nach den ersten beiden Stufen erhalten werden, sind 12 und 15, und ihre entsprechenden Darstellungen in Hexadezimalzahlen sind c und f. Die hexadezimale Darstellung von Resten ist hier in umgekehrter Richtung organisiert, wie sie erzeugt wurden.

Daher wird der Wert 252 in diesem Fall hexadezimal als fc dargestellt.

Verwenden Sie %x, um den Hexadezimalwert in Kleinbuchstaben in C zu drucken

Der Hexadezimalwert wird mit dem Formatmodifikator %x in kleinen Buchstaben gedruckt. Wie ff, ffd usw.

Sehen wir uns das folgende Beispiel an, um zu sehen, wie der Formatbezeichner %x funktioniert.

Der erste Schritt besteht darin, die notwendigen Bibliotheken zu importieren und eine main()-Funktion zu konstruieren.

Erstellen Sie als nächstes eine Variable mit dem Datentyp int und nennen Sie sie integerValue. Geben Sie ihm dann einen ganzzahligen Wert, der in den entsprechenden Hexadezimalwert konvertiert wird.

Dann müssen wir den ganzzahligen Wert in hexadezimal umwandeln, was der Bezeichner %x automatisch für uns erledigt und den Wert in Kleinbuchstaben ausgibt.

Code:

#include <stdio.h>

int main() {
  int integerValue = 252;
  printf("The converted value in hexadecimal is: %x\n", integerValue);
  return 0;
}

Ausgang:

The converted value in hexadecimal is: fc

Verwendung von %X zum Drucken von Hexadezimalwerten in Kleinbuchstaben in C

In diesem Beispiel verwenden wir %X in der print-Anweisung, um den Wert in Grossbuchstaben auszugeben.

#include <stdio.h>

int main() {
  int integerValue = 252;
  printf("The converted value in hexadecimal is: %X\n", integerValue);
  return 0;
}

Ausgang:

The converted value in hexadecimal is: FC
Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn