ha, cool, ich hab vor kurzem eine Anwendung geschrieben die Binary Reader heißt
tschuldigung, in meinem code kommt deswegen die Zahl raus, weil ich ulong statt double als Datentyp genommen hab. Tausche einfach alle ulongs durch double aus, dann müsste es stimmen.
Und jetzt nochmal zu dem binären auslesen, speichern, ...
Wenn man Zahlen speichern will, dann bietet sich das binäre an, weil man ja nicht pro Zahl ein byte braucht, sondern damit platzsparend Zahlen speichern kann. Wenn man z.B. 2354 speichern will, dann wäre das mit dem File.WriteAllText(); 4 bytes. Wenn man aber 2354 in binärcode umwandelt (was dann 0000100100110010 wäre, wenn die übersetzung stimmt) dann brauche ich nur 2 bytes. Das ist um 50% Platzsparender. Deswegen lohnt sich so etwas. Allerdings wird dadurch das schreiben und lesen etwas komplizierter. Man muss die Zahl erst in einen 16 - Bit Datentyp speichern (hier bietet sich ushort an), und dann in zwei byte Datentypen zerlegen. Man verschiebt dazu alle Bytes dieses Datentyps um 8 nach links. Dabei fallen die restlichen stellen einfach weg. Nach dem Beispiel von oben währe dann 2354 >> 8 == 9. Warum? Weil das Byte nach links verschoben wird. Das ist das erste Byte das geschrieben werden soll. Das zweite Byte soll die andere hälfte sein. Das geht mit (byte). Dabei fallen die letzten stellen weg. Das auslesen funktioniert genau andersherum. Man liest die beiden Bytes, und setzt das erste und das zweite Byte zusammen. Das geht mit
Code:
ushort result = (ushort)((byte1 << 8) | byte2)
Das erste byte wird um 8 nach links verschoben, und das zweite hintendrangesetzt.
Zufälligerweise bin ich sogar dabei, ein Tutorial über dieses Thema zu schreiben