tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
165
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    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 :
    1
    
    System::String ^tmpStr = Convert::ToChar(130).ToString

    Bin für jede Art von Hilfe dankbar.

    Viele Grüße
    RuFF
    Geändert von RuFFnEcK (19.07.11 um 16:47 Uhr) Grund: Sterne ***
     

  2. #2
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Lies mal hier: Character (Datentyp).

    Ich bin jetzt nicht so .NET bewandert, aber Convert müsste auch eine Methode ToUnsignedChar anbieten. Versuch's mal damit.
     

  3. #3
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    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
     

  4. #4
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    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

    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:

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    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 :
    1
    
    " "

    Best regards

    Edit: Übrigens: ASCII hat nur 128 Zeichen, von 0 bis 127. Siehe auch ASCII-Tabelle
    Geändert von Tim Bureck (20.07.11 um 09:57 Uhr) Grund: Hexadezimaldarstellung hinzugefügt
     

  5. #5
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    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

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



    Viele Grüße
    RuFF
     

  6. #6
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Moin,

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

    Code cpp:
    1
    2
    3
    4
    5
    6
    
    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
     

  7. #7
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    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
     

Ähnliche Themen

  1. char wert anderem char zuweisen (char* )
    Von Dragon_Arch im Forum C/C++
    Antworten: 14
    Letzter Beitrag: 26.05.08, 20:52
  2. ein konvertierungsproblem
    Von rpkoch im Forum Cinema 4D
    Antworten: 0
    Letzter Beitrag: 13.02.08, 10:04
  3. [c++] char*<-system::string* konvertierungsproblem
    Von pflegefall im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 29.03.06, 15:27
  4. Konvertierungsproblem von Quark 6.5 zu 5 zu 4
    Von Sparrow84 im Forum Desktop Publishing (DTP)
    Antworten: 0
    Letzter Beitrag: 26.01.06, 09:44
  5. PDF Konvertierungsproblem
    Von nbgMAsTer im Forum Vektor-Programme
    Antworten: 2
    Letzter Beitrag: 13.04.05, 21:00