Datei lese und schreib Problem



  • Ja sry war bissel in eile. Naja also ich wollte das halt nich direkt als text speichern. Ich habe einen string der aus Hex werten besteht. Und den möchte diese möchte ich auch so abspeichern. Das heißt das ich wenn in dem String z.b FF steht was also 255 dezi währen das er das als ASCI zeichen in die Datei schreibt.



  • Alexander2k4 schrieb:

    255 dezi währen das er das als ASCI zeichen in die Datei schreibt.

    Also ich hätte vermutet, Du willst die 255 nicht als Zeichenketten-Repräsentation, sondern direkt als Bitmuster ablegen. Dafür könntest Du die Hex-Repräsentation des Wertes in ein ein byte-Objekt umwandeln und es via BinaryWriter in die Datei schreiben.



  • Danke das währe meine nächte Frage gewesen. 😃 Nur grade ist es so das ich den header mit Readbyte auslese das NULL bytes vorhanden sind. Und die benötigen stellen das speichern. Dann habe ich einen anreihung von Zahlen die ich dann nach Hex umwandeln was auch super klapt. Nur muss ich dem User ja irgent wie die Infos aus der Header zeigen. Und mit:

    32 2E 30 30

    als Revisions Nummer kann er eyer weniger anfangen einen 2.00 ist da glaube ich schon besser 🙂

    Ok dann werde ich keine Zeit zu vergeuden erstmal die Datei schreiben und evl. später mal den Header anzeigen. Würde mich aber Trotzdem über einen Antwort freuen 🙂



  • Nebenfrage : Wie wandele ich hex in byte und dez um?



  • Also wenn dein Hex bei der selben Länge bleibt wie du gepostet hast, kannst du es so machen:

    string str = "322E3030";
    byte[] s = new byte[4];
    s[0] = str.subString(0,2);
    s[1] = str.subString(2,4);
    s[2] = str.subString(4,6);
    s[2] = str.subString(6,8);



  • Das lauft bei mir nicht:

    1. Kann er string nich in byte umwandeln was ich aber mit

    Convert.ToByte(str.subString(0,2));

    geändert habe.

    2. Bricht er beim 2 String mit der meldung ab das das Format nich stimmt.

    3. Mach ich doch so nur Folgendes:

    s[0] = 32
    s[1] = 2E

    oder nicht?



  • Hallo,
    also so wird es garantiert gehen, ABER wegen dem E macht er einen Aufstand, da HEX anders angeschrieben wird z.B. 0x007b:

    string str = "322E3030";
    byte[] s = new byte[4];
    s[0] = Convert.ToByte(str.Substring(0,2));
    s[1] = Convert.ToByte(str.Substring(2,2));
    s[2] = Convert.ToByte(str.Substring(4,2));
    s[3] = Convert.ToByte(str.Substring(6,2));

    wenn du das E gegen eine Zahl umtauscht gehts wunderbar 😉 Da du aber einen string in ne Zahl umwandeln gehts nicht, aber hier hast du schonmal einen Ansatz damit kannst du bisschen rumspielen.



  • Aber nach meiner rechnung sind:

    32 hex = 50 dez

    die Funkion giebt aber 32 zurück und das is ja dann nich ganz richtig.



  • Dann schau dir mal folgende Seite an, ist bestimmt das was du brauchst:
    http://www.codeproject.com/csharp/hexencoding.asp



  • Danke das hat mir sehr geholfen. Wenn ich jetzt noch hin bekomme einer der Werte in ASCII Zeichen zu bekommen bin ich glücklich 🙂


Anmelden zum Antworten