passen kann ich davon ausgehen, dass Ihr char* name
enthält eine Zeichenfolge Darstellung der kurz, dass Sie wollen, dh "15"
.
Do nicht Wirf einen char*
direkt auf einen Nicht-Zeiger-Typ. Umwandlungen in C ändern die Daten tatsächlich nicht (mit ein paar Ausnahmen) - sie informieren lediglich den Compiler, dass Sie einen Typ in einen anderen Typ behandeln wollen. Wenn Sie eine char*
in eine unsigned short
einwerfen, nehmen Sie den Wert der Zeiger (die nichts mit dem Inhalt zu tun hat), alles abschneiden, die nicht in eine short
passt, und dann den Rest wegwerfen . Das ist absolut nicht das, was du willst.
Statt die std::strtoul
Funktion verwenden, die einen String analysiert und gibt Ihnen wieder die gleiche Anzahl.
unsigned short number = (unsigned short) strtoul(name, NULL, 0);
(Sie müssen noch eine Besetzung verwenden, da strtoul
ein unsigned long
kehrt Dieser Guss zwischen zwei verschiedenen jedoch integer-Typen, und so gültig ist. das schlimmste, was passieren kann, ist, dass die Zahl innerhalb name
zu groß ist, in eine short
--a Situation zu passen, die Sie an anderer Stelle überprüfen.)
Warum möchten Sie den Wert des Zeigers in einer Datei an erster Stelle speichern? Versuchen Sie, den Zeiger auf die Zeichenfolge als eine Art UID zu verwenden, die einem Primärschlüssel in einer Datenbank ähnelt? Weitere Details wären hilfreich. –
Ich lese eine Binärdatei und analysiere sie, dann konvertiere ich die Daten und gebe sie in ein neues Binärformat aus. Ich arbeite auch mit Legacy-Code. Ich muss wirklich lernen, wie man char * in unsigned short umwandelt. – Elpezmuerto