Es klingt, als ob Sie eine hexadezimale Zeichenfolge erhalten und den numerischen Wert in einer Variablen speichern müssen. Dann müssen Sie irgendwann in der Zukunft von der Variablen zurück in eine Zeichenfolge konvertieren.
Sie müssen sich keine Gedanken über die interne Darstellung machen, die von grundlegenden numerischen Typen (int, long, float) verwendet wird. Während der Computer den Wert nativ in Binärdateien speichert, sind Programmiersprachen so konzipiert, dass diese Tatsache (etwas) vor Ihnen verborgen ist, so dass Sie sich nicht darum kümmern müssen.
Jetzt, wo wir die Sprache den internen Speicher als "eine Nummer" abstrahieren lassen, brauchen wir nur noch eine Möglichkeit, diese Nummer zu lesen und zu schreiben. Alle Sprachen haben Funktionen, mit denen Sie Daten in verschiedenen Formaten lesen/schreiben können, und Sie können immer Ihre eigenen rollen (obwohl das nicht empfohlen wird, wenn Sie gerade lernen), also verwende ich C.
C Angebote scanf()
und printf()
- es gibt noch andere Funktionen, die diese Aufgabe erfüllen, aber diese sind ein anständiges Beispiel für Dinge, die Sie verwenden können. Diese Funktionen sind sehr ähnlich, so ist es einfach, einen Code zu schreiben:
#include <errno.h>
#define FORMAT "%X"
// Converts string input into n integer
//
// args
// str the string to convert
// x pointer to location for return value
//
// returns
// 0 on success
// nonzero on failure
int get_num_from_hex_string(char* str, int* x)
{
if(str == 0) return EINVAL;
// we assume MAX_LEN is defined, somewhere...
if(strlen(str) > MAX_LEN) return EINVAL;
int result = scanf(FORMAT, x);
// there's prolly a better error, but good enough for now
if(result != 1) return EIO;
return 0;
}
// Converts an integer into a hex string
//
// args
// x - the integer to convert
// str - the pre-allocated output buffer
// len - amount of space left in str. Must be
// at least 12 bytes.
//
// returns
// 0 on success
// nonzero on failure
int get_hex_string(int x, char*str, int len)
{
if(str == 0) return EINVAL;
if(len < 12) return EINVAL;
sprintf(str, FORMAT, x);
}
C++ mit Visual Basic –
??? Verwenden Sie C++ für diese oder Visual Basic (und ist das VB6 oder VB.NET)? – Oded
Entschuldigung mit visueller C++ 2008 Express Edition –