JPG in Hex wandeln

Anfängerfragen zum Programmieren mit PureBasic.
persepole
Beiträge: 36
Registriert: 14.04.2005 22:56

JPG in Hex wandeln

Beitrag von persepole »

Hallöchen,

bin seit heute purebasic neuling und habe gleich mal ne frage.
Ich möchte ein JPG im Hex-code in ein RTF-file schreiben.
Dazu sollte das JPG von bin nach hex convertiert werden.
Bisher habe ich versucht einen Wert (bin) in Hex zu wandeln.
Das funzt auch sehr gut, doch nur bis 4byte. Habe keine ahnung wie man
an die restlichen bytes ran kommt. Hat jemand ne Idee oder zumindest einen
ansatz.

MFG
persepole
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

Hi,

versuche es mal ReadLong() und FileSeek() (Beschreibung siehe PB-Hilfe)

cu
Ulf
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Code: Alles auswählen

ReadFile(0,"d:\bild.jpg")
CreateFile(1,"D:\bild_hex.txt")
UseFile(0)
While Eof(0)=0
  UseFile(0)
  tmphex$=Right("0"+Hex(ReadByte()&$FF),2)
  UseFile(1)
  WriteString(tmphex$)
Wend
CloseFile(0)
CloseFile(1)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

Hi,

deshalb meinte ich ja auch zusätzlich FileSeek():

Code: Alles auswählen

ReadFile(0,"c:\Drehen von DSC07835.JPG")
CreateFile(1,"c:\bild_hex.txt")
UseFile(0)
While Eof(0)=0
    UseFile(0)
    tmphex$=Right("0"+Hex(ReadByte()&$FF),2)
    FileSeek(Loc()+1) ;<<<---- Pointer weitersetzen
    UseFile(1)
    WriteString(tmphex$)
Wend
CloseFile(0)
CloseFile(1) 
cu
Ulf
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Also soweit ich weiß setzen die ganzen ReadXXX-Befehle den File-Pointer automatisch weiter.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Fileseek ist über, der Zeiger rutscht "automatisch" weiter

Wichtiger ist

endergebnis$= Right("0"+Hex(ReadByte()&$FF),2)

sprich

-Lese ein byte
-verknurpel (AND) das mit $FF (256) damit das ein positiver Wert wird
-wandel den Kram in Hex um
-pack ne 0 davor weil der Hex Befehl auch einstellige Sachen ausgibt
-nimm als Ergebnis von rechts 2 Stellen als Endergebnis

Wobei die VerknurpelAktion eigentlich nur kosmetische Gründe hat, da der Hex-Befehl auch ohne das funktioniert wie ff zeigt

Code: Alles auswählen

ReadFile(0,"d:\bild.jpg") 
CreateFile(1,"D:\bild_hex.txt") 
UseFile(0) 
While Eof(0)=0 
  UseFile(0) 
  count+1
  tmphex$=Right("0"+Hex(ReadByte()),2) 
  Debug tmphex$+" "+Str(count)

 FileSeek(count-1)  ; hier ist es nun wirklich nötig
  tmphex$=Right("0"+Hex(ReadByte()&$FF),2) 
  Debug tmphex$+" "+Str(count)
  
  UseFile(1) 
  WriteString(tmphex$) 
Wend 
CloseFile(0) 
CloseFile(1)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
persepole
Beiträge: 36
Registriert: 14.04.2005 22:56

Beitrag von persepole »

Hallo zusammen,

vielen vielen Dank für die schnelle und kompetente Hilfe!
Nun funktioniert es sehr gut. Die Beispiele sind für mich als anfänger sehr aufschlussreich. Klasse Forum.
:D :D :D
persepole
Beiträge: 36
Registriert: 14.04.2005 22:56

Beitrag von persepole »

Hallo @alle,

jetzt hätte ich dazu doch noch eine letzte Frage,
wie ich die Hex-daten an das Dateiende schreibe.
Habe bis jetzt mit fileseek versucht auf das Dateiende zu zeigen
aber irgendwie funktioniert das nicht. Habe die Hilfe schon durchstöbert
mit meinem Anfängerwissen konnte ich nichts brauchbares finden.
Ein lösungsansatz wäre toll.
Vorab schon mal Dankeschön.

MFG
persepole
Antworten