Autor Beitrag
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 14.07.07 18:20 
Hi!

Ich hab jetzt schon öfters das Problem gehabt, per FileStream den Inhalt einer Datei zu laden bzw. zu schreiben, genauergesagt bei der Typumwandlung. FileStream kann immer nur in ein byte[] laden/schreiben, was mach ich aber zum Beispiel bei einem int[,]? Casten funktioniert nicht. Muss ich da jetzt wirklich in einer Schleife immer 4 Bytes im Puffer erst in einen Integer umwandeln (wüsste nichtmal wie das gehen soll)?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
int[,] grid = new int[99];

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
byte[] buf = new byte[sizeof(grid)];  // merke gerade, dass sizeof(grid) nicht mal geht.. omg
fs.Read(buf, 0sizeof(grid));        // da natürlich auch nicht
fs.Close();
grid = buf; // <- geht natürlich nicht, grid ist ein int[,] und buf ist byte[]

In der Datei, die gelesen werden soll, stehen die Integer als 4-Byte jeweils drin.

Bitte um Hilfe. :flehan:

Chryzler
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 14.07.07 18:58 
Ich sehe keine andere Möglichkeit, als da in einer Schleife durchzulaufen.

Vier Bytes in einen Integer umwandeln kannst Du mit BitConverter.ToInt32.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 14.07.07 19:52 
Ah ok, vielen Dank! Ich habs jetzt so gemacht:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
byte[] buf = new byte[324];
fs.Read(buf, 0324);
fs.Close();
for (int y = 0; y < 9; y++)
    for (int x = 0; x < 9; x++)
        grid[x, y] = BitConverter.ToInt32(buf, (y * 9) + x);