none
Text zu ASCII-Werte umwandeln RRS feed

  • Frage

  • Hallo Leute.

    Ich möchte aus einen String-Text zu einzelnen Ascii-Wert umwandeln.

    Mein aktuelle Code zum Probiert sieht so aus:

            private void ButtonKonvert_Click(object sender, EventArgs e)
            {
                int byt = 0;
                int Laenge = 0;
                int Idx = 0;
                int I = 0;
                String[] ArraySTR = richTextBox1.Lines;
                int ArrayLaenge = ArraySTR.Length;
                for(Idx = 1; Idx < ArrayLaenge; Idx++)
                {
                    Laenge = ArraySTR[Idx].Length;
                    for(I = 1; I < Laenge; I++)
                    {
                        byt = Convert.ToInt32(ArraySTR[Idx], I);
                        richTextBox2.AppendText(byt.ToString()+",");
                    }
                    richTextBox2.AppendText(Environment.NewLine);
                }
            }

    Leider hat bei diesem Befehl "byt = Convert.ToInt32(ArraySTR[Idx], I);" Problem.

    Hat einer eine Idee, wie ich mein Problem lösen kann.

    Mit freundlichen Grüßen

    Patrick Dreger


    Patrick_cpp

    Mittwoch, 31. März 2021 12:20

Antworten

  • Hallo Nochmal.

    ich habe das Problem gelöst. Statt Integer habe ich jetzt Char genommen und dann ausgegeben.

            private void ButtonKonvert_Click(object sender, EventArgs e)
            {
                char[] byt;
                int Laenge = 0;
                int Idx = 0;
                int I = 0;
                String[] ArraySTR = richTextBox1.Lines;
                int ArrayLaenge = ArraySTR.Length;
                for(Idx = 0; Idx < ArrayLaenge; Idx++)
                {
                    byt = ArraySTR[Idx].ToCharArray();
                    Laenge = ArraySTR[Idx].Length;
                    for(I = 0; I < Laenge; I++)
                    {   
                        richTextBox2.AppendText(Convert.ToInt32(byt[I])+",");
                    }
                    richTextBox2.AppendText(Environment.NewLine);
                }
            }

    Leider habe ich neues Problem.

    Da meine Textbox breite kleiner als meine Ascii-Wert mit Komma ist, macht eine neue Zeile.

    Ich habe Mein richTextBox2 SchrollBars auf "ForcedBoth", aber es macht immer noch Zeilenumbruch. Wie kann ich Zeilenumbruch deaktivieren?


    Patrick_cpp

    Mittwoch, 31. März 2021 14:10

Alle Antworten

  • Hallo Patrick,

    dein Problem lässt sich sicher lösen, wenn Du die benötigten Informationen postest.

    Vor allem bitte die exakte und vollständige Fehlermeldung, die Du erhältst.

    Dann stellt sich die Frage, warum die Überladung der ToInt32 Methode wählst, die die Basis mit angibt? Lt. Doku sind dort nur die Werte, 2, 8, 10 und 16 erlaubt. Alle anderen Werte (wie in deinem Fall 1 beim ersten Durchlauf der Schleife) werden mit einer Exception zurückgewiesen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Mittwoch, 31. März 2021 12:47
    Moderator
  • Leider habe ich Probleme ein Screenshot hoch zu laden.

    Ich habe die Fehlermeldung als Text kopiert:

    Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
        System.Convert.ToInt32(string, int) in convert.cs
        Bascom_Text2Byte.Form1.ButtonKonvert_Click(object, System.EventArgs) in Form1.cs
        System.Windows.Forms.Control.OnClick(System.EventArgs)
        System.Windows.Forms.Button.OnClick(System.EventArgs)
        System.Windows.Forms.Button.OnMouseUp(System.Windows.Forms.MouseEventArgs)
        System.Windows.Forms.Control.WmMouseUp(ref System.Windows.Forms.Message, System.Windows.Forms.MouseButtons, int)
        System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message)
        System.Windows.Forms.ButtonBase.WndProc(ref System.Windows.Forms.Message)
        System.Windows.Forms.Button.WndProc(ref System.Windows.Forms.Message)
        System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message)
        ...
        [Aufrufliste abgeschnitten]
    ---------------------------------------------------------------------------------------------------------------

    In Prinzip soll einzelne String-Text in einzelnen Ascii-Werte mit Komma ausgeben:

    "Hallo" -->"65,97,108,108,111," -->NewLine

    Ich habe extra Int32 genommen, weil meist als Int oder Int32 ausgeben wird.


    Patrick_cpp

    Mittwoch, 31. März 2021 13:16
  • Hallo Nochmal.

    ich habe das Problem gelöst. Statt Integer habe ich jetzt Char genommen und dann ausgegeben.

            private void ButtonKonvert_Click(object sender, EventArgs e)
            {
                char[] byt;
                int Laenge = 0;
                int Idx = 0;
                int I = 0;
                String[] ArraySTR = richTextBox1.Lines;
                int ArrayLaenge = ArraySTR.Length;
                for(Idx = 0; Idx < ArrayLaenge; Idx++)
                {
                    byt = ArraySTR[Idx].ToCharArray();
                    Laenge = ArraySTR[Idx].Length;
                    for(I = 0; I < Laenge; I++)
                    {   
                        richTextBox2.AppendText(Convert.ToInt32(byt[I])+",");
                    }
                    richTextBox2.AppendText(Environment.NewLine);
                }
            }

    Leider habe ich neues Problem.

    Da meine Textbox breite kleiner als meine Ascii-Wert mit Komma ist, macht eine neue Zeile.

    Ich habe Mein richTextBox2 SchrollBars auf "ForcedBoth", aber es macht immer noch Zeilenumbruch. Wie kann ich Zeilenumbruch deaktivieren?


    Patrick_cpp

    Mittwoch, 31. März 2021 14:10
  • Hallo Patrick

    Leider habe ich Probleme ein Screenshot hoch zu laden.

    Ich habe die Fehlermeldung als Text kopiert:

    Fehlermeldungen bitte immer als Text posten. Screenshots optional zusätzlich aber den Text brauchen wir immer.

    Allerdings steht bei dir die Fehlermeldung überhaupt nicht drin, nur die Aufrufliste. Die ist zwar ggfs. auch wichtig, die Fehlermeldung an sich wäre aber das wichtigere Element.

    Meine Frage nach "warum die Convert.ToInt32 Überladung mit Angabe der Basis hast Du leider falsch verstanden. Da Du jetzt aber die richtige Überladung genommen hast, ist das dann auch egal.

    Bzgl. deiner neuen Frage: Bitte sowas in einem neuen Thread posten, da das mit der ursprünglichen Frage nichts mehr zu tun hat. Das erhöht die Übersichtlichkeit.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 1. April 2021 08:42
    Moderator