Hallo an alle,
Gegeben sei das folgende Byte-Array:
byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
Nun soll ich dieses array in eine Textdatei speicher (klappt einwandfrei) und mit einer anderen Methode in einer Console ausgeben. Der Clou ist nun das ich nur 7 Zeilen mit je max 11 zeichen an platz verwenden soll.
Meine derzeitige lösung:
public void ESAOut(string pfad)
{
FileStream reader = File.Open(pfad, FileMode.Open);
byte[] array = new byte[reader.Length];
reader.Read(array, 0, (int)array.Length);
for (int i = 0; i < array.Length; i++)
{
Console.Write("{0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} \n", (byte)array[i]);
}
reader.Close();
Console.ReadLine();
}
ist nicht so die lösung.
wer kann mir helfen. ich hänge da seit 3 Wochen dran.
Wo hakt es bei Dir genau?
Wenn ich es richtig erkenne, schreibst Du pro Zeile 11mal das selbe Element und du bekommst 77 Zeilen.
Theo. genügen 2 Schleifen. Eine 7er Schleife und eine 11er Schleife.
Hallo erstmal,
Würde es nicht einfach so gehen, wenn du es in ein 2 Dimensionales Array speicherst, mit der Größe [7 , 11] und dann durch 2 For-Schleifen das ganze durchgehst und jedes mal schreiben lässt?
Also so
public void ESAOut(string pfad)
{
FileStream reader = File.Open(pfad, FileMode.Open);
byte[] array = new byte[reader.Length];
reader.Read(array, 0, (int)array.Length);
byte[,] array2d = new byte[7, 11];
int i = 0;
for(int i = 0; i < 11; i++)
{
for (int j = 0; j < 11; j++)
{
array2d[j, i] = array[i];
i++;
Console.Write(array2d[j, i] + " ");
}
Console.WriteLine("");
}
reader.Close();
Console.ReadLine();
}
Du schreibst "Textdatei", liest aber Binärdaten (Bytes) aus. Wie speicherst du denn die Daten in die Datei?
Und bei den Zeilenumbrüchen hilft dir evtl. der Modulo-Operator %
weiter.
Weeks of programming can save you hours of planning
Bevor man dir eine Antwort geben kann, sollte zuerst klar sein was du genau machen willst.
Unter der Beschreibung "nur 7 Zeilen mit je max 11 zeichen an platz" kann ich mir nichts vorstellen. Was bedeutet das?
also wenn das Array vorgegeben ist denke ich ist die Lösung:
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32
...
" cc # # "
...
sind doch ASCII-Codes im Array, oder??
so bekäme man 7 Zeilen mit je 11 Zeichen..
Hallo,
es gibt sicherlich noch eine schönere Variante, aber wenn ich dich richtig verstanden habe möchtest du ja nach 11 Einträgen die du in die Console einliest eine neue Zeile mit den nächsten 11.
Eine Variante wäre folgendes:
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i] + " ");
if (i == 10 || i == 21 || i == 32 || i == 43 || i == 54 || i == 65 || i ==76 )
{
Console.WriteLine();
}
}
So bekommst du alle 11 Zeichen eine neue Zeile.
Nur tote Fische schwimmen mit dem Strom
Ist zwar eine (konkrete) Lösung, aber mithilfe einer bestimmten mathematischen Operation viel einfacher (und allgemeiner) lösbar. 😉
Dafür wäre vermutlich modulo sinnvoller als genau zu zählen welche Zeilennummer du gerade hast 😃
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.