Viele Zahlen in ein Array schreiben



  • Hallo,

    man kann ja ein Array gleichzeitig deklarieren, erzeugen und initialisieren:

    byte[] a = {0x22, 0x33, 0x44, 0x55}:
    

    Wenn das Array schon existiert und ich andere Werte hineinschreiben möchte, dann könnte ich das so machen:

    a[0] = 0x12;
    a[1] = 0x13;
    a[2] = 0x14;
    a[3] = 0x15;
    

    Wenn es sich um viele Zahlen handelt, dann ist das mühsam. Es wäre doch viel schöner wenn ich die Werte wie in ersten Beispiel hintereinander auflisten könnte. Gibt's da irgendeinen Trick?

    Michael


  • Mod

    Aus einem statischen Array die Werte kopieren.



  • Danke, das ist eine gute Idee.

    Michael



  • Daten binär in eine Datei speichern und die an die Stelle im Speicher laden.



  • In deinem Fall hilft vielleicht auch einfach eine for-Schleife mit a[i] = 0x12+i;

    MfG SideWinder



  • @SideWinder Das war nur ein Beispiel. So wohlgeordnet sind die Zahlen in Wirklichkeit nicht.

    Michael


  • Mod

    Zusammengefasst:

    1. Es besteht irgendwie ein algorithmischer Zusammenhang -> Den Algorithmus programmieren, wie von SideWinder gesagt.
    2. Es ist eine Liste von ein höchstens ein paar Dutzend -> Liste fest einprogrammieren, aber so aufschreiben wie von mir gesagt, nicht alle Zuweisungen einzeln.
    3. Es sind große Datenmengen -> Zusätzliche Datendatei, wie von TGGC gesagt.


  • Vielen Dank für alle eure Antworten. Ich habe das jetzt so gemacht:

    byte[] b = new byte[] { 0x05, 0x13, 0xAA, 0x27 };  // Array wird deklariert, erzeugt und initialisiert
    //...
    new byte[] { 0x11, 0xAB, 0x43, 0x00 }.CopyTo(b, 0);  // Das bereits existierene Array wird mit neuen Werten gefüllt
    

    Michael



  • Dann wäre aber

    b = new byte[] { 0x11, 0xAB, 0x43, 0x00 };
    

    viel effizienter (da nur eine Referenz gesetzt wird und nicht die Einzelwerte kopiert werden)!



  • stimmt, diese Lösung ist noch besser.

    Michael



  • @micha7 sagte in Viele Zahlen in ein Array schreiben:

    stimmt, diese Lösung ist noch besser.

    Aber sie ist nicht identisch und tut vor allem nicht das, was du ursprünglich gefragt hast. Denn falls du irgendwo b kopiert hast, änderst du dort die Daten nicht und hast dann 2 unterschiedliche Arrays. Du schreibst also nicht in das Array hinein, sondern nimmst einfach ein neues, anderes Array. Es ist also etwas anderes - ob es das ist, was du willst, musst du anhand deines restlichen Codes entscheiden.


Log in to reply