String durchsuchen

hi vfl_freak, danke für deinen tipp.

Habe ja jetzt ein unsigned char array aus 4 zeichen...
[0] = 0
[1] = x
[2] = 2
[3] = 0

kann ich die jetzt zusammen in ein unsigned char (kein array) kopieren? so das ich halt nur ein unsigned char habe und kein array?

Danke

Moin,

da hast Du aber was gewaltig missverstanden :-(
Du hast weiter oben geschrieben, dass Dein String nur die Zeichen 0x020 (also Blanks) enthält!
Das hexadezimale Zeichen 0x20 entspricht Dezimal 32 und somit ist es völlig egal, ob Du signed char 0x20 oder unsigned char 0x020 deklarierst! Interessant ist eigentlich nur für die Zeichen, die nicht zw. 0 und +127 liegen.

Gemeint war die Schleife so, dass Du das jeweils i-te Zeichen des einen Strings castest und an die i-te Stelle des anderen schreibst!

Mit Deinen Array
Habe ja jetzt ein unsigned char array aus 4 zeichen...
[0] = 0
[1] = x
[2] = 2
[3] = 0
läßt sich so gut wie nix anfangen, da Du diese 4 Byte ja nun kaum noch (oder nur mit extrem viel überflüssigem Aufwand) als einzelnes Blank interpretieren kannst ...

Gruß
Klaus
 
Hm also lässt sich nicht sowas bewerkstelligen? :

BYTE bCode = 0x20;

// statt der 0x20 halt dynamisch ausm array auslesen und irgendwie casten....
 
Moin,
ja ... doch ... genau das ! ! !
Wobei Du beachten musst, dass BYTE eine Typdefinition ist ! ! ! Es ist im Prinzip nur eine andere (kürzere) Schreibweise für unsigned char !!

typedef unsigned char BYTE;
// oder bspw. auch analog:
typedef unsigned long DWORD;

Auch ein BYTE ist nur ein Zeichen, so wie char !

Vielleicht solltest Du hier mal den Code posten, mit dem Du Probleme hast - vielleicht wird es dann klarer .....

Gruß
Klaus
 
Hi.

Es ist herrlich wie ihr alle aneinander vorbeiredet. Was wohl zum größten Teil daran liegt, das trolly immer noch nicht die Netiquette gelesen hat und offenbar einfach nicht in der Lage ist seine Beiträge ordentlich zu verfassen und sein Problem richtig zu erkären.

Gruß
 
Hi, wie kann ich dann dem BYTE bCode meinen Wert aus dem array zuweisen? Ich brauch doch auch kein bytearray dafür oder? 0x20 sollte doch so ins byte passen, die frage ist nur, wie ichs zuweisen kann....
 
Da Du uns Deinen Code noch immer nicht gepostet hast (und wenn dann bitte mit den Code-Tags - die '#'-taste im Editor ! ! !), rate ich mal :

Code:
//  "BYTE bCode" ist eher schlecht, da das kleine 'b' für 
//  die meisten Programmierer einen bool'schen Wert 
//  impliziert
 BYTE cCode = MeinTollesArray[25];

Diese Zeile weist Deiner unsigned char-Variablen 'cCode' den Wert an 26. Stelle des Arrays zu! Ob dies nun ein Blank (0x20/32), die Ziffer '5' (0x35/53) oder Buchstabe 'z' (0x7a/122) ist, ist dabei völlig unerheblich!

gruß
Klaus
 
Danke nochmals!

Meine Frage lautet:

Habe ein unsigned char array aus 4 Zeichen...

[0] = 0
[1] = x
[2] = 2
[3] = 0

Kann ich daraus jetzt den Wert (0x20) einem Byte übergeben?

Grüße
 
Nein, Du hast es noch immer nicht richtig verstanden :-(

Was Du beschreibst entspricht in etwa
Code:
char cBeispiel[4];
cBeispiel[0] = 0 (0x00)
cBeispiel[1] = x (0x78)
cBeispiel[2] = 2 (0x32)
cBeispiel[3] = 0 (0x00)

Du hast 4 einzelne char, die kannst Du so nicht in ein Blank (0x20) konvertieren ! ! !

Poste doch einfach mal den Code ! ! !

Gruß
Klaus
 
Nein, Du hast es noch immer nicht richtig verstanden :-(
Ihr redet immer noch aneinander vorbei.

Das Problem stellt sich (vermutlich) so dar:

Er/sie hat einen String "0x20" und möchte nun diesen String interpretieren (das was die ganze Zeit mit casten gemeint war) und letztlich den vorzeichenlosen Wert in einer unsigned char Variablen speichern.

Sowas geht am einfachsten mit einem Input Stringstream:
C++:
#include <sstream>

std::istringstream ifrmt("0x20");

unsigned int val;
if (ifrmt >> std::hex >> val) {
  unsigned char uc = static_cast<unsigned char>(val);
}
Gruß
 
Ja genau, das was deepthroat sagt, wollte ich die ganze Zeit.... Hatte mich vllt bisschen doof ausgedrückt....

Danke an Alle! Werde mir jetzt nochmal alle Posts anschauen um Stück für Stück zu verstehen!

Thema erledigt!

Gruß
 

Neue Beiträge

Zurück