Effizient konvertieren zwischen Hex, Binär und Dezimal in C/C++

Ich habe 3 base-Darstellungen für positive ganze zahlen:

  1. Dezimal, in unsigned long-variable (z.B. unsigned long int NumDec = 200).
  2. Hex in string-variable (z.B. string NumHex = "C8")
  3. Binäre string-variable (z.B. string NumBin = "11001000")

Ich möchte in der Lage zu konvertieren zwischen zahlen in allen 3 Darstellungen in der meisten effizienten Art und Weise. I. e. zur Umsetzung der folgenden 6 Funktionen:

unsigned long int Binary2Dec(const string & Bin) {}
unsigned long int Hex2Dec(const string & Hex) {}
string Dec2Hex(unsigned long int Dec) {}
string Binary2Hex(const string & Bin) {}
string Dec2Binary(unsigned long int Dec) {}
string Hex2Binary(const string & Hex) {}

Was ist der effizienteste Ansatz für jeden von Ihnen? Ich kann mit C und C++, aber nicht steigern.

Edit: Von "Effizienz" meine ich Zeit-Effizienz: Kürzeste Ausführungszeit.

  • Du bist die erste Funktion zwei Namen sind extrem irreführend. Du bist nicht der Rückkehr eine dezimale Darstellung. Die Sie zurückgeben, unsigned long, mit einer unbestimmten, opaken (es sei denn, Sie tun etwas Implementierung-definiert) interne Darstellung.
  • Was würden Sie vorschlagen, die Funktionsnamen zu werden?
  • Binary2Int und Hex2Int macht viel mehr Sinn. Natürlich werden diese Funktionen nicht gebraucht, mit strtol in der c-Bibliothek.
  • Binary2ULong und HexToULong wäre viel besser.
  • Der Grund, warum es verwirrend ist, dass numerische Datentypen, die nicht über eine Basis, und sind damit keine "Basis 10".
InformationsquelleAutor Igor Oks | 2009-05-04
Schreibe einen Kommentar