myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C++ Strings casten

Willkommen

myGully

Links

Forum

 
Antwort
 
Themen-Optionen Ansicht
Ungelesen 06.09.11, 23:06   #1
wmosebach
Ist öfter hier
 
Registriert seit: Jan 2010
Beiträge: 189
Bedankt: 117
wmosebach ist noch neu hier! | 0 Respekt Punkte
Standard C++ Strings casten

Hallo liebe Community,

ich stresse mich gerade ein wenig mit einem casting Problem herum und hoffe ihr könnt mir helfen.
Ich lese aus einer Datei einen String dieser beinhaltet 2 Zeichen (1 Byte z.B. C9), dieses möchte ich nun in Feld eines "unsigned char"-Feldes bekommen.

Die Typen sind fest vorgegeben, an denen kann nicht mehr gerüttelt werden.

Derzeit nutze ich:

array[0] = strtol(str, NULL, 16);
(z.B. str = "c9")

Dies frisst mir leider zu viele Ressourcen. Habt ihr einen vernünftigen Alternativvorschlag?

Besten Dank schon mal im Vorraus.
__________________
Make the world a prettier place - get a bikini wax!
wmosebach ist offline   Mit Zitat antworten
Ungelesen 07.09.11, 09:35   #2
HappyMike34
Erfahrenes Mitglied
 
Registriert seit: Mar 2010
Beiträge: 676
Bedankt: 655
HappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt Punkte
Standard

Wenn ich dich richtig verstehe willst du den String mit zwei Zeichen als Hex-Wert interpretieren!?


Wenn du weißt dass es Hex-Ziffern sind könntest du es direkt aus dem Ascii code berechnen

// oberes nibble
wert = str[0] >= '0' && str[0] <= '9' ? (str[0] - '0') << 4 :
str[0] >= 'A' && str[0] <= 'F' ? (str[0] - 'A' + 0xA) << 4 :
str[0] >= 'a' && str[0] <= 'f' ? (str[0] - 'a' + 0xA) << 4 : -1 /*fehler*/;

// unteres nibble
wert += str[1] >= '0' && str[1] <= '9' ? (str[1] - '0') :
str[1] >= 'A' && str[1] <= 'F' ? (str[1] - 'A' + 0xA) :
str[1] >= 'a' && str[1] <= 'f' ? (str[1] - 'a' + 0xA) : -1 /*fehler*/;

ist jetzt nicht getestet aber so ähnlich könnte es mit wenigen Vergleichen und Additionen aussehen
HappyMike34 ist offline   Mit Zitat antworten
Ungelesen 07.09.11, 12:51   #3
wmosebach
Ist öfter hier
 
Registriert seit: Jan 2010
Beiträge: 189
Bedankt: 117
wmosebach ist noch neu hier! | 0 Respekt Punkte
Standard

Klingt ansich nicht schlecht, die vergleiche auf groß und kleinschreibung kann man allerdings getrost rauslassen. Der Input ist grunsätzlich klein.

Ich werde es mal implementieren und testen wie es sich im Verhältnis zu strtol macht.

Besten dank!
__________________
Make the world a prettier place - get a bikini wax!
wmosebach ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.


Sitemap

().