Was passiert mit einer Datei die man in einen ByteArray lädt?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Was passiert mit einer Datei die man in einen ByteArray lädt?

    Hallo,
    was passiert mit einer Datei, die ich in einen ByteArray abspeichere?
    Wenn ich z.B. dbbytes[1].ToString(); in einer Textbox anzeigen lassen möchte, wird mir eine Zahl angezeigt, aber was ist diese Zahl dann, also was hat sie für eine Bedeutung?

    C#-Quellcode

    1. ​ WebClient wc = new WebClient();
    2. Uri uri = new Uri("http://download2184.mediafire.com/d0awdehhvpsg/wcobrd762rcrxgl/datei.apk");
    3. byte[] dbytes = wc.DownloadData(uri);
    4. textBox1.Text = dbytes[1].ToString();
    @AProgrammer Sofern es sich bei der geladenen Datei um Text handelt, musst Du ihn mit dem passenden Encoding in einen String konvertieren:

    C#-Quellcode

    1. string s1 = Encoding.UTF8.GetString(bytes);
    Das Encoding musst Du ggf. probieren, achte auf Umlaute.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Um das ganze mal ein wenig gründlicher und Ausführlicher zu erläutern, wenn du eine Datei in ein Byte-Array lädst, hast du dort drinnen die rohen Bytes dieser Datei. Ich denke ich muss nicht mit Bits & Bytes anfangen, oder? Mithilfe von Codierungen wie ASCII oder UTF8 lassen sich diese Bytes dann als Zeichen deuten, da jede dieser Kodierungen festgelegt hat, welcher Byte-Wert welchen Buchstaben darstellt. Für ASCII sind das 128 festgelegte Zeichen, bei UTF8 weit über 4 Millionen. Das Tolle an UTF-8 ist, dass es zu ASCII afaik komplett kompatibel ist. Bedeutet also, dass du eine ASCII Datei auch mit dem UTF-8 Encoding in 99,9% der Fälle einlesen können solltest.

    Nun ist jedoch nicht jede Datei die du auf dem PC-liegen hast eine Text-Datei, genauso wie die .apk, die du da genannt hast. Wenn du versuchst diese per UTF-8 "lesbar" zu machen, so wirst du, neben vielleicht ein Paar Header-Daten nur Kauderwelsch herausbekommen. Dies kann daran liegen, dass z.B. eine Kompression vorliegt, eine Verschlüsselung, oder einfach ein anderes Encoding angewandt wurde z.B. Big5.

    Erwarte also nicht, wenn du irgendwelche Dateien einliest, dass du was Sinnvolles zu sehen bekommst. Testen kannst du das ganz einfach mit Notepad++, da es in der Lage ist, dir auch Kauderwelsch anzuzeigen, oder gar das Encoding einer Datei zu ändern.