Konvertierungsproblem int -> Char

RuFFnEcK

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Problem, dass Zeichen größer als 127 sich nicht in Char´s konvertieren lassen?!
Sitz da schon Stunden dran und hab schon ein paar Sachen ausprobiert...

Um es ganz einfach zu halten, folgender Code funktioniert schon nicht und ich frag mich warum?!

Code:
System::String ^tmpStr = Convert::ToChar(130).ToString

Bin für jede Art von Hilfe dankbar.

Viele Grüße
RuFF
 
Zuletzt bearbeitet:
Hallöchen,

also ich programmier schon Weile und Ansich ist das kein Problem, aber ich hab keine Ahnung was .NET da für einen Murks macht...
Es sollte doch wohl mit .NET möglich sein eine Zahl > 127 in das entsprechende ASCII Zeichen zu konvertieren!

Es gibt keine ToUnsignedChar() Methode, zumal ToChar() bis 127 auch einwandfrei funktioniert...!

Ich will jetzt auch nicht anfangen zu basteln, kann mir denn keiner Helfen****?

Viele Grüße
RuFF
 
Moin,

Ok, bei meiner Vermutung hab ich ziemlich ins leere geraten.. und unsignedChar macht egtl. auch wenig Sinn. Ich schieb's mal auf die Uhrzeit :D

So, jetzt hab ich aber nochmal nachgeguckt. Char ist in .NET ein UTF8-Zeichen. Wenn man sich jetzt mal die UTF-8 Tabelle anschaut, sieht man, dass 130 (0x82) ein Controlzeichen ist, also kein sichtbares Zeichen!

Folgendes Programm funktioniert daher bei mir ohne Murren:

C++:
using namespace System;

int main(array<System::String ^> ^args) {
  String ^tmpStr = Convert::ToString(160).ToString(); // Leerzeichen
  Console::WriteLine(L"\"" + tmpStr + L"\"");
  Console::ReadLine();
  return 0;
}

Erwartete und tatsächliche Ausgabe ist:

Code:
" "

Best regards

Edit: Übrigens: ASCII hat nur 128 Zeichen, von 0 bis 127. :) Siehe auch ASCII-Tabelle
 
Zuletzt bearbeitet:
Moin,

erstmal danke für die Mühen!
Es geht um einen CRC-Code der an jede Zeile angehangen wird...Somit muss ich die nicht sichtbaren Zeichen irgendwie in meinen String bekommen und an das Gerät schicken...
Wie stell ich das dann an? Wie bekomme ich Controlzeichen in einen String sollte die Frage lauten :D

Vielleicht steh ich grad nur auf dem Schlauch, aber weiß echt nicht weiter :(



Viele Grüße
RuFF
 
Moin,

das passiert ja, indem du diesen anhängst. Du siehst es ja nur nicht. ;) Hier ein kleiner Test:

C++:
int main(array<System::String ^> ^args) {
  String ^tmpStr = Convert::ToChar(130).ToString();
  Console::WriteLine(L"\"" + Convert::ToInt32(Char::ConvertToUtf32(tmpStr, 0)) + L"\"");
  Console::ReadLine();
  return 0;
}

Hier wird "130" ausgegeben. Der Character wurde also erst in den String geschrieben, dann konnte man ihn auch wieder auslesen.

Best regards
 
Hi,

hab tausend Dank es ****t jetzt alles wie gewollt und ja ASCII geht nur von 0 bis +127.
Ähm was soll man sagen, hatte ein Stück Code übernommen und nicht weiter geprüft... :(
Hab mir den Code auf Reglerseite angeschaut und siehe da ein "bcc % 256" und anschließendes Konvertieren löst alle Probleme^^ Bzw. nehme ich jetzt gleich nen "unsigned char" zum aufsummieren ;)

Viele Grüße
RuFF
 

Neue Beiträge

Zurück