![]() |
Unterscheidung binär/ASCII
Nach welchen Kritieren würdet ihr entscheiden, ob es sich bei einem Datenblock um binäre Daten oder um Text-Daten handelt?
Meine Idee ist das folgende:
Delphi-Quellcode:
Ist das ausreichend oder gibts da bessere Unterscheidungskritierien?
if chr in [$0A,$0D,$20..$FF] then //...
|
Re: Unterscheidung binär/ASCII
Moin Chewie,
Z.B. betrachtet Visual Source Save (in Standardeinstellung), alle Dateien, die keine binären Nullen enthalten als Textdateien, bzw. alle die binäre Nullen enthalten, als Binärdateien. Da Unicode Textdateien aber auch binäre Nullen enthalten (können), lässt sich das abschalten, und man muss selber dafür Sorge tragen, dass die Dateien richtig sind. Alle Zeichen unterhalb $1F werden als Steuerzeichen angesehen (im Prinzip auch $00), so dass Du wohl nur
Delphi-Quellcode:
wirst nehmen können.
if chr in [$01..$FF] then
// oder if chr <> #00 then Was leicht in einem Text vorkommen kann (hängt auch davon ab woher dieser stammt) wären $07 (Bell), $09 (horizontal Tab), $11 (vertikal Tab), vielleicht auch $12 (Form Feed). |
Re: Unterscheidung binär/ASCII
Hallo,
bei den Schweizern gibt es ein stückchen Code dazu... ![]() |
Re: Unterscheidung binär/ASCII
Ich habs mir mal angeschaut. So ähnlich hätt ich es auch gemacht, prüfen, ob größer/gleich 32 oder gleich 9, 10, 13. Aber was macht denn eigentlich die 26 genau? Als Erklärung heißt es "substitute", aber "substitute" für was? Ich hab nämlich noch nie Zeichen 26 in einer Textdatei gesehen.
Ach ja, das hätte ja eigentlich in einen neuen Thread gehöt, oder? :oops: |
Re: Unterscheidung binär/ASCII
Hallo Chewie,
habe mal nach "ASCII 26" gegoogelt und dabei folgendes rausgefunden: "Read File containing EOF (AscII 26) chars into StringList" ![]() |
Re: Unterscheidung binär/ASCII
Ach so! SUB ist gleich EOF. Gut zu wissen. Danke, jetzt bin ich glücklich :D
|
Re: Unterscheidung binär/ASCII Leicht OT
Moin Chewie,
Zitat:
In der Konsole kannst Du es Dir z.B. ansehen. Du müsstest da nur echo STRG-P STRG-Z , dann Enter eingeben. STRG-P = Print Damit konnte man früher den Protokolldruck, als Ersatz oder Ergänzung für den Bildschirm, ein- und ausschalten. Alle Steuerzeichen 1 - 26, kannst Du in der Konsole mit STRG+A bis STRG-Z eingeben. Wenn Du z.B. mal eine Datei mittels Copy CON: erstellen willst (musst) kannst Du die Eingabe mit STRG-Z beenden. Womit wir eigentlich wieder am Anfang wären, denn auch die Zeichen < 32 könnten Bestandteil einer Textdatei sein, bei Unicode auch die 0. Geht es jetzt um bestimmte Dateien, oder allgemein. Z.B. ist bei C festgelegt, welche Zeichen in der Datei vorkommen können, so dass eine gezieltere Prüfung möglich wäre. |
Re: Unterscheidung binär/ASCII
Das Problem ist ja, dass die Daten gar nicht in einer Datei vorkommen, sondern einfach die "Nutzlast" von IP-Paketen darstellen.
Ich bastele ja gerade an einem nonVCL-IP-Sniffer, der mir die eingehenden IP-Pakete anzeigt, und nach Entfernen des IP-Headers und des Headers des höheren Transportprotokolls bleiben ja Daten übrig (außer bei z.B. TCP-Acknowledgememts). Und um diese Daten zu sehen, kann ich ja schlecht ein EDIT nehmen, es kann sich ja um binäre Daten handeln. Deswegen hab ich ja mal nach einem HexView-Control gefragt und hab mir das Dingens dann ja selber gebastelt. Jetzt wollte ich da drinnen halt noch einbauen, dass er bei Textdaten die Daten in einem EDIT anzeigt. Aber ich werd wohl noch ne Option einbauen, die Ansicht zu wechseln, da ist eine Fehlinterpretation der Daten nicht so tragisch. Aber danke für die Infos! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz