Hallo,
ich habe eine Datei, in der hexadezimalwerte gespeichert sind (Bsp. folgt) Diese möchte ich gern auslesen, soweit so gut, jedoch scheint es beim auslesen immer wieder zu Fehlern zu kommen, da nicht korrekt ausgelesen wird was in der Datei an dieser Stelle steht. Es wird einfach dur ein anderes zeichen ersetzt. Die Zeichen die ersetzt werden schein willkürlich zu sein, jeddenfalls konnte ich kein Muster entdecken, werden aber immer durch das gleche Zeichen ersetzt.
Beispiel(Inhalt ist hexadezimal):
In der Datei steht: 0f 00 c0 02 00 65 10 80 80 00 14 2d 31 dd 74 70 ...
eingelesen wird aber: 0f 00 3f 02 00 65 10 3f 3f 00 14 2d 31 3f 74 70 ...
Hier sieht man das einige Werte einfach durch "3f" ersetzt werden. Ich habe etwas mit dem Encoding (utf-8) rumgespielt aber auch das hat das Problem nicht gelöst, dann wurde einfach durch 0xfffd (unter utf-8) ersetzt.
Anbei noch die Codepassage:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| public CCSDS(string _fullFilename) { char[] primH = new char[6]; char[] secH = new char[10]; char[] zaehlV = new char[13];
FileStream fs = new FileStream(_fullFilename, FileMode.Open, FileAccess.Read); TextReader tr = new StreamReader(fs, System.Text.Encoding.ASCII);
for (int i = 0; i < 6; i++ ) { int hex; if ((hex = tr.Read()) != -1) { primH[i] = Convert.ToChar(hex); } }
for (int i = 0; i < 10; i++) { int hex; if ((hex = tr.Read()) != -1) { secH[i] = Convert.ToChar(hex); } }
for (int i = 0; i < 13; i++) { int hex; if ((hex = tr.Read()) != -1) { zaehlV[i] = Convert.ToChar(hex); } } tr.Close(); } |
Hat jemand eine Idee warumm nicht korrekt 1:1 das ausgelesen wird, was in der Datei steht. sondern scheinbar willkürlich Werte durch etwas anderes ersetzt werden?
Moderiert von
Kha: C#-Tags hinzugefügt