Problem mit der Größe von char
-
Hallo,
char hallo =32;
Warum erhalte ich für hallo ab 32 nur Müll ?
Alle Ziffern bis einschl. 31 werden richtig dargestellt.Habe auch schon unsigned char ausprobiert, nutzt aber rein garnichts.
Besteht überhaupt die ´Möglichkeit Ziffern zwischen 32 und 255 einzutragen, wenn ja wie ????
Die Größe von char beträgt doch 1 Byte, oder ?Vielen Dank.
-
32 Selbst steht für "Carriage Return" ab 33 fangen die Sonderzeichen an etc.
Aber ich wüsste nicht das das Probleme macht?!
-
Mit hallo = 32; weist du dem char einen ASCII-Wert zu, 32 z.B. entspricht dem Leerzeichen. Selbstverständlich kannst du auch Werte bis 255 zuweisen, die 97 z.B. enspricht dem kleinen 'a'.
Du solltest uns mal verraten, was du mit "darstellen" meinst, dann können wir dir vielleicht sagen, warum dabei nur "Müll" herauskommt.
-
PuppetMaster2k schrieb:
32 Selbst steht für "Carriage Return"
Hab ich 'ne falsche ASCII-Tabelle? Bei mir steht bei CR die 13 ...
-
Komisch bei mir steht für CR da 0D.

-
Jansen schrieb:
PuppetMaster2k schrieb:
32 Selbst steht für "Carriage Return"
Hab ich 'ne falsche ASCII-Tabelle? Bei mir steht bei CR die 13 ...
Ups, mein Fehler

-
Mit "darstellen" meine ich, wenn ich im Fenster " Lister überwachte Ausdrücke" mir die char Variable ansehe, wird mir bei bei Eingabe von 31 der Hexwert '\x1F angezeigt. Aber bei 32 "" ( Leezeichen) usw.
Mein Problem ist, ich muß von einer int Zahl ( bis 255 ) den Hexwert in einem char abspeichern. Und bei einer int Zahl bis 31 funktioniert das auch ohne weiters. Ich habe es auch schon mit IntToHex versucht, aber da klappt es wieder nicht mit dem char.
Mein eigentliches Problem ist "nur", das ich eine int Zahl im Hexformat in ein char schreiben muß. Habe aber leider keine Ahnung mehr wie ich das anstellen kann.
-
benny_1 schrieb:
Mit "darstellen" meine ich, wenn ich im Fenster " Lister überwachte Ausdrücke" mir die char Variable ansehe, wird mir bei bei Eingabe von 31 der Hexwert '\x1F angezeigt. Aber bei 32 "" ( Leezeichen) usw.
Wenn du die Hex-Werte sehen willst musst du halt die entsprechende Option setzen (Doppelklick auf den Ausdruck in der Liste, Hexadezimal anwählen).
Dass bei den Werten unter 32 automatisch die Hex-Werte angezeigt werden liegt daran, dass es sich hierbei um nichtdarstellbare Zeichen handelt.
-
Ja, wie ich die Hex Werte im Überwachungsfenster sehen kann, ist schon klar, aber gespeichert werden diese ja nun mal nicht so.
Und genau da liegt mein Problem bis einschl. 31 werden die Werte ( automatisch ) in Hex gespeichert aber danach leider nicht mehr. Aber genau das möchte ich gerne, dass alle Werte in Hexformat gespeichert werden.
-
Und jetzt mußt Du uns noch erklären was Du mit 'speichern' meinst. In einer Datei?
Wenn man es genau nimmt werden sowieso nur binäre Werte 'gespeichert' egal wo und wie. Kommt dann eben nur darauf an wie und womit Du die Daten wieder einliest und vor allem wie und womit Du sie darstellst.
-
Ok.
Ich brauche dies um über die serielle Schnittstelle auf eine Hardwarekomponente zuzugreifen.
Da übertrage ich ein char Array und da muß so etwas wie 0x04 usw. drinstehen.Und im Programm muß der Anwender Zahlen ( bis 255 ) eintragen und diese werden zur Hardware übertragen und das halt in diesen ( 0x1F ) Format.
-
ok, dann sollte das doch kein Problem sein. Egal was Du in einen Editfeld für den char angezeigt bekommst, intern steht da IMMER nur der Hexwert drin. z.B. kannst Du einem char ein 'a' zuweisen. Dieses 'a' wird aber inter aber als 0x61 gespeichert und auch genau so kannst Du das an den Port senden. Somit kannst Du natürlich auch direkte Zuweisungen von Hexwerten durchführen. char xx = 0xFF weist dem char den Wert 255 (Hex FF) zu. Du darfst das allerdings nicht mit dem Buchstagen 'F' verwechseln, der hat nämlich den Hexwert 0x46. Allerdings kannst Du Werte bis 255 nur in unsigned char unterbringen.