Ich habe einen C# Quellcode gefunden, der aus einer Datei gelesen hat, die 1000000 double number hat. Der Quellcode ist unten.Datei lesen in C#
public void filereader()
{
using (BinaryReader b = new BinaryReader(File.Open("C:\\Users\\Hanieh\\Desktop\\nums.txt", FileMode.Open)))
{
int length = (int)b.BaseStream.Length;
byte[] fileBytes = b.ReadBytes(length);
for (int ii = 0; ii < fileBytes.Length - 32 ; ii++)
{
savg1[ii/2] = (double)(BitConverter.ToInt16(fileBytes, ii)/20000.0);// inja error index midee
ii++;
}
}
}
Wenn ich Quellcode zum Lesen von Textdatei ausführen, habe ich einen Fehler, der savg1-Index, der außerhalb der Grenze ist. Ich debugge Schritt für Schritt und Ergebnis zeigt Größe der Länge = 24000000, aber savg1 = 1000000. meine Frage ist hier: wie dieser Quellcode funktioniert und wie ich dieses Problem beheben kann.
Erster Tipp: 'File.ReadAllBytes' ist ein einfacher Weg, um alle Bytes in einer Datei zu lesen ... Jetzt können wir nicht reproduzieren Sie dies, weil Sie nicht gezeigt haben, wie Sie 'savg1' deklariert oder initialisiert haben ... es ist nicht klar, was Sie mit" Länge der Größe = 24000000, aber savg1 = 1000000 "meinen ... wenn Sie die Länge der Datei meinen ist 24000000 aber die Größe von 'savg' ist 1000000 dann erklärt das die Ausnahme ... Sie müssen es auf die richtige Größe initialisieren, die aussieht wie es sein muss' (fileBytes.Length) - 32/2' –
'fileBytes .Länge - 32' warum '-32'? –
'BitConverter.ToInt16' und' double' 16bit & 64bit ... hu? –