Erklärung für Problem ASCII umwandeln in Int



  • klingt einfach, scheint aber nicht so zu sein 😉

    also die umwandlung hab ich zwar, nur scheint sie nicht zu hundert prozent zu funktionieren..

    ein Sensor liefert mir diese Zeichen, mit denen kann ich aber leider nicht allzu viel anfangen, also muss ich sie umwandeln:

    unsigned int ASCII;
    
       for ( unsigned int z=0; z<strlen(tedsdaten); z++)
       {
          ASCII=tedsdaten[z];
          Memo1->Lines->Add(IntToStr(ASCII));
       }
    

    also bei Carriage Return werden die richtigen Zahlen übergeben,
    genau dasselbe bei Line Feed..

    und dann hab ich so seltsame Zahlen im Minusbereich, die dann solche Zeichen darstellen sollen:
    ÿ = -1
    ý = -3
    á = -31

    kann mir wer erklären warum?
    und wie kann ich das ändern? ^^'

    mfg
    wolfshuendchen



  • Hallo,

    wenn ich das richtig sehe, ist "tedsdaten" im Prinzip ein char-Array!?
    Wenn der Sensor jetzt ein ASCII-Zeichen größer 0x7Fh ausgibt, zB. 0x81h, wird das von deinem Code falsch interpretiert. 0x81h als char ist in Integer-Darstellung -1. 0x81h als unsigned char ist in Integer-Darstellung 129.
    Die Lösung könnte sein, die Sensordaten in ein unsigned char Array zu speichern...

    MfG

    Edit: Wenn ich das richtig sehe, ist das übrigens kein Borland-spezifisches Problem... 😉



  • Kolumbus schrieb:

    Edit: Wenn ich das richtig sehe, ist das übrigens kein Borland-spezifisches Problem... 😉

    Aber es kommt doch IntToStr in seinem Beispiel-Code vor. Das ist schon Rechtfertigung genug! 😉



  • Dann hab' ich es wohl nicht richtig gesehen... 😃



  • stimmt, hab schon befürchtet, dass es wieder so was kleines sein würde :S
    mit dem unsigned hat es ohne probleme geklappt! vielen dank 😉
    jetzt kann ich mich den anderen umwandlungen widmen ô.O

    mfg
    wolfshuendchen

    p.s.: immer die richtigen bereiche zu suchen hab ich aufgegeben.. bis jetzt ist mir noch alles in den builder bereich hineingeschoben worden *gg*


Log in to reply