Hallo,
Ich hätte eine Frage zum BinaryReader
Mit dem BinaryReader lese ich die binären Dateien (nee echt oder?) und den InputStream den der Reader mir erzeugt sind alles Zahlen.
Das ist auch kein Problem wenn die Daten in einer Datei stecken.
Doch wenn ich den binären Code in einer Variable habe und dann zu dem ZahlenCode kommen möchte, wie stelle ich das an ohne die Daten vorher in eine Datei zu schreiben und sie danach mit dem BinaryReader zu lesen.
Also ohne den Umweg über die Dateien zu nehmen:
Variable > Zahlen-Code
und nicht:
Variable > Datei > Zahlen-Code
Thx
ich bin mir nicht ganz sicher was du genau meinst.
wenn du von byte[] auf einen datentyp wie int, double usw. gehen möchtest: ==> BitConverter.
Den BinaryReader kannst du mit einem beliebigen Stream verwenden, d.h. du musst nicht den Umweg über eine Dateien gehen, sondern könntest z.b. statt einem FileStream einen MemoryStream verwenden.
Hallo feadur,
ich habe auch nicht genau verstanden, was er meint, aber ich denke, er meint den umgekehrten Weg, also vom Datentyp wie z.B. int zur binären Repräsentation der Zahl als byte[]-Array(also dem Zahlen-Code).
Hallo lechner,
aber auch diese Richtung geht mit der BitConverter-Klasse.
herbivore
Hallo,
Was ich meine ist folgendes:
Eine Variable mit irgendeinem Inhalt und daraus möchte ich den binären Zahlencode
Das dürfte dann eh genau das sein was herbivore gemeint hat
Edit:
Mit der BitConverter Klasse komme ich schon auf den binären Code, allerdings ist dieser nur Hex-Code.
Ich möchte aber nur Zahlen haben?? Wie kann ich das anstellen?
Vielen Dank erst mal.
Hallo lechner,
ein Byte ist ein Byte und keine Hexzahl. Zu einer Hexzahl wird ein Byte erst, wenn du es entsprechend ausgibst. Du kannst es aber ausgeben, wie du willst.
Mach doch mal ein Beispiel, welche Ausgangzahl du hast, und wie das Ergebnis aussehen soll.
herbivore
Als Ausgangscode habe ich binären Code: z.B. einer EXE-Datei (öffnen mit Editor)
Und als Endprodukt möchte ich folgendes:
24745740024787100487748795861021548752658416574122102121....
Das funktioniert auchn wenn ich die Datei mit dem BinaryReader öffne und dann den Text in eine TextBox schreibe oder sonst wohin.
Ich möchte aber zu dem "ZahlenWirrWarr" kommen ohne den Code aus Dateien zu lesen.
aber das die daten kommen doch aus der exe datei? du willst aber nicht aus der datei lesen?? verrat uns doch mal was du eigentlich machen willst. ansonsten bleibt dein anliegen ein rätsel.
Okay, noch mal.
Ich möchte eine Datei, aber keine Textdatei, also exe oder doc oder xls...
Öffne ich diese Datei mit dem BinaryReader kommt der Zahlen BinärCode raus:
1374641032016546574641354679130079707895679746546...
Und speichere ich diesen Inhalt wieder mit dem Binary Writer kommt wieder der gewohnte Inhalt raus, den wir kennen wenn man eine exe oder doc Datei mit dem Editor öffnet.
Ich möchte aber den ZahlenBinärCode, den bekomme ich auch, aber nur wenn ich den BinärCode aus einer Datei lese.
Ich will aber den Zahlen BinärCode ohne den BinärCode aus einer Datei zu lesen, also habe ich den BinärCode den man ansonsten mit dem Öffnen mit dem Editor bekommt in einer Variable.
Und jetzt möchte ich den binären WirrWarr der Variable in Zahlen BinärCode umwandeln, ohne den Umweg über den BinaryReader zu nehmen.
Hallo lechner,
zeig mal deinen Code, wie du es jetzt hast und markiere in dem Code die Stellen, wo du es gerne anders hättest.
herbivore
Gibt es eine Funktion oder sonst was mit dem ich den Inhalt einer Variable in Zahlen umwandeln kann?
Hallo lechner,
so ist es sicher nicht einfacher! Es ist immer noch nicht klar, welche Umwandung du genau willst. Deshalb habe ich dich auch um deinen Code gebeten. Da steht ja die richtig Umwandlung (wenn auch mit einem Umweg) schon drin.
herbivore
Nun gut hier hast du den Code, ich hoffe es ist klar was ich meine:
string output = "";
private string BinReader (string path)
{
FileInfo file_A = new FileInfo(path);
BinaryReader reader = new BinaryReader(file_A.OpenRead());
while (reader.PeekChar() > -1)
{
output += reader.ReadByte();
}
reader.Close();
return output;
}
//Die Datei text.doc binär öffnen und der daraus resultierende ZahlenCode in eine Variable schreiben
string content = BinReader(text.doc);
Der Nachteil ist dann aber, das ich den Umweg über die Datei nehmen muss.
Wie mache ich das aber wenn ich den Inhalt in einer Variale habe und nicht in einer Datei??
Hallo lechner,
Wie mache ich das aber wenn ich den Inhalt in einer Variale habe und nicht in einer Datei??
was für eine Variable? Ein Byte-Array vermute ich mal:
private string BinReader (byte [] ab)
{
string output = "";
foreach (byte b in ab) {
output += b;
}
return output;
}
Wobei du bei längeren Dateien besser StringBuilder.Append statt += verwenden solltest.
herbivore
Gebe ich den Code aus der Variable content aus, dann sieht das so aus:
235646421165104606769406746463030464645674695879....
Ich habe den binären Code aber in einer Variable und nicht in einer Datei!
So sieht der Code aus, den ich normalerweise in einer Datei habe, ich habe den Code aber in einer Variable!
ÐÏࡱá > þÿ þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á q` ø¿
Und daraus möchte ich das: 674697169791797...
Und es handelt sich um kein ByteArray sondern um eine String Variable
Hallo,
evt. wäre ein kleiner Exkurse über Zahlenformate & 'Wie werden Zahlen, Zeichen etc. auf dem Computer verarbeitet & gespeichert' ganz sinnvoll...
Ich habe den binären Code aber in einer Variable und nicht in einer Datei!
Evt. wäre der Variablentyp ganz sinnig, also was für ein Typ ist die Variable mit dem binär Code, sonst hat doch herbivore ein Abschnitt gepostet, wie man ein Byte-Array in eine "Zahlenkette" umwandelt.
Des Weiteren stellt sich die Fragen, wofür man soetwas benötigt?
PS: Wenn du einen String hast, also so:
string s = "ÐÏࡱá ...";
Dann sollte Encoding.ASCII.GetBytes() dir die Bytes des Strings liefern, womit du dann mit herbivore Codes dieses Byte-Array in deine gewünschte Zahlenkette umwandelt.