C++ Binär > Hex und andersrum

Aixx

Ensign
Registriert
Sep. 2011
Beiträge
239
Schönen guten Abend,

ich bin auf der Suche nach einem Code um nach einer Benutzereingabe Binär/Hex diese umzuwandeln.

Am besten wäre dies ohne Hilfe von Bibliotheken damit die Benutzung von Funktionen/Arrays deutlicher und klarer für mich würden.

Wäre sehr dankbar wenn jemand etwas für mich hätte !

Mfg !
 
Du weißt wie man von Basis 2 nach Basis 16 kommt oder? Dann ist es doch eigentlich kein Problem mehr. Oder wo klemmt es?
 
Code:
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define FirstDigit 48

void BinToHex(char* BinData, char* HexData)
{
   long int Number = 0;
   int BinLength = strlen(BinData);

   for(int i=0; i<BinLength; i++)
   {
      Number += ((BinData[BinLength - i - 1] - FirstDigit) * pow(2, i));
   }

   ltoa(Number, HexData, 16);
}

int main()
{
   char* BinBuffer = "11110101";
   char HexBuffer[256];

   BinToHex(BinBuffer, HexBuffer);
   printf("Bin: %s\nHex: %s", BinBuffer, HexBuffer);
   getch();
   return 0;
}

Code ist in ANSI-C aber das ist ja kein grosser Unterschied zu C++ (Quelle http://cboard.cprogramming.com/c-programming/27438-convert-binary-hex.html )
 
wieso #define FirstDigit 0x30 auf diesen wert steht, erfährst du, wenn du charmap.exe öffnest und auf die 0 klickst.
 
also mit printf kannst du c-style direkt nach hex ausgeben. der formatcode ist %X. Es gibt aber noch deutlich mehr möglichkeiten. (0x etc pp)

das kannst du auch direkt mit scanf nutzen. also brauchst da nichts umrechnen.
 
Zurück
Oben