Öffentlich > [O] Off-Topic und Gäste

Hex-Viewer (?)

(1/5) > >>

Delo Cor:
Und nun um Cherus Aufgabenstellung etwas mehr Übersicht zu verschaffen...
Sein Auftrag war: Öffne Datei, springe zu stelle x, Lese paar bytes, gib sie im hex-format aus

Soweit so,so gut.Klingt nach einem kleinen aber feinen Hex-Viewer(für die Konsole).
Meine Python-Lösung wäre wie folgt:

--- Zitat von: Delos Python-Lösung V0.2-Konsole ---from __future__ import with_statement
import os.path
import optparse


parseobj=optparse.OptionParser()
parseobj.add_option('-p',type='string',dest='path',help="path to file e.g. C:/file.txt")
parseobj.add_option('-s',type='int',dest='pos',help="Position to start")
parseobj.add_option('-r',type='int',dest='read',help="bytes to read e.g ")
options,remainder=parseobj.parse_args()

with open(options.path,'rb') as f:
    try:
        f.seek(options.pos)
    except TypeError:
        raise TypeError,"-s parameter is incorrect/missing!"
    if options.read:
        output=f.read(options.read)
    else:
        output=f.read()
   
    if output == '':
        print "end of file reached! Max.Length: %i" %os.path.getsize(f.name)
    else:
        print output.encode("hex")
   
raw_input("press enter to quit...")

--- Ende Zitat ---

Usage: hexfromfile.exe [options]

Options:
  -h, --help  show this help message and exit
  -p PATH     path to file e.g. C:/file.txt
  -s POS      Position to start
  -r READ     bytes to read e.g

Link zur .exe : http://rapidshare.com/files/211507207/hexfromfile.zip
py-Datei im Anhang(auch bei der exe dabei) ->für Linix-User wäre das wohl besser.
Python 2.5 wäre wegen des with-statements minimale Voraussetzung. ( Python 3k wäre falsch,weil es keine Rückwärtskompatibilität zu den 2.X Versionen besitzt)

Cherubim:
Das Problem bei Python:
Es kann nicht ohne Interpreter laufen.

Wie ich mittlerweile weiß, hatte ich mich in meinen C++ Prog ver-pointert, darum kam bei der Wandlung kacke raus.

Delo Cor:
Man kann aber Python-Skripte mit dem Modul py2exe in exe Dateien kompilieren.
Das Endprodukt meines Skripts kannst du ja auf RS runterladen und ausprobieren. Es ist eine exe mit dll und sonstigen Abhängigkeiten,die ca. 3MB groß ist.(einziger Nachteil daran)
Damit läuft es auch ohne Interpreter.

Isami:

--- Zitat von: Cherubim am 20.Mär.09, 19:20:44 ---Das Problem bei Python:
Es kann nicht ohne Interpreter laufen.

Wie ich mittlerweile weiß, hatte ich mich in meinen C++ Prog ver-pointert, darum kam bei der Wandlung kacke raus.

--- Ende Zitat ---
oh, klar, standard-fehler :)

warum hast dir hex-umschreiber eigentlich nicht selbst geschrieben?
byteweise reinleisen und hex draus machen :>
1 byte --> 2 hexzahlen
musst einfach das byte dezimal rauslesen, und mit ganzzahliger division durch 16 mit Rest (die reste sind die hex werte) beommst die lösung
kurze schleife für die 4,7gb und fertig

Cherubim:
Ich will ja nicht 4,7GB lesen, sondern 2 Byte aus 4,7GB  ;D

Ich denke aber mittlerweile das ich der Lösung sehr nahe bin.
Wenn ich fertig bin poste ich den Code mal zur Revision.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln