Voor een CS project dien ik te weten hoe men de offset van een hexadecimale pair kan uitlezen en tevens hoe men een bepaalde hexadecimale pair een specifieke offset kan geven.
Om het even wat duidelijker uit te leggen. Stel je opent een .txt bestand in een hex-editor, dan zie je de bit-stream van het .txt bestand hexadecimaal weergegeven. Wat je tevens in de hex-editor zult zien zijn de offsets van de hex pairs. Voorbeeld:
De bovenstaande bit stream welke getoond wordt door de 5 hexadecimale pairs zorgt ervoor dat het woord "hallo" in ASCII wordt getoond in het desbetreffende .txt bestand.
Elk van de hex-pairs heeft zijn eigen offset. Een offset is een relatief memory adres.
De pair "68" heeft als offset "00000000". De pair 61 heeft als offset "00000001" en de pair 6F heeft als offset "00000004".
Nu is mijn vraag alsvolgt. Hoe kan met behulp van C++ de offset van een specifieke hex-pair te weten komen en dus uitlezen? En tevens hoe kan men een specifieke offset toewijzen aan een specifieke hex-pair.
Wanneer ik dus de offset van "61" uitlees hoor ik dus "00000001" als resultaat te krijgen. Maar daarnaast wil ik de offset van "61" ook kunnen veranderen. Dan zou je zeggen, ok waarom verplaats je niet gewoon de letter "a" naar de plek in de bit stream die jij wilt? Nou stel dat ik dat zou doen, dan zou het woord "hallo" niet meer correct verschijnen in het .txt bestand, het woord zou dan namelijk veranderen en daarmee de betekenis en dat wil ik dus niet.
Ik wil dus aan een hex-pair een offset geven die ik wil, maar zonder de volgorde te veranderen! Dat betekent dat "61" dus best als offset "00000007" mag krijgen, want dat is hoger dan "00000000", dus de "a" zal dan altijd na de "h" komen. De letters die na de "a" komen zullen dan een offset moeten krijgen welke hoger is dan "00000007" om de volgorde van de letters in stand te houden. Ik wil de offsets van de hex-pair vervolgens schrijven naar de hard disk.
Mijn vraag is dus, hoe kan ik de offset van een hex-pair blijvend veranderen in C++? (Blijvend, dus opgeslagen op de hard disk.)
Om het even wat duidelijker uit te leggen. Stel je opent een .txt bestand in een hex-editor, dan zie je de bit-stream van het .txt bestand hexadecimaal weergegeven. Wat je tevens in de hex-editor zult zien zijn de offsets van de hex pairs. Voorbeeld:
code:
1
2
| Offset 00000000 68 61 6C 6C 6F hallo |
De bovenstaande bit stream welke getoond wordt door de 5 hexadecimale pairs zorgt ervoor dat het woord "hallo" in ASCII wordt getoond in het desbetreffende .txt bestand.
Elk van de hex-pairs heeft zijn eigen offset. Een offset is een relatief memory adres.
De pair "68" heeft als offset "00000000". De pair 61 heeft als offset "00000001" en de pair 6F heeft als offset "00000004".
Nu is mijn vraag alsvolgt. Hoe kan met behulp van C++ de offset van een specifieke hex-pair te weten komen en dus uitlezen? En tevens hoe kan men een specifieke offset toewijzen aan een specifieke hex-pair.
Wanneer ik dus de offset van "61" uitlees hoor ik dus "00000001" als resultaat te krijgen. Maar daarnaast wil ik de offset van "61" ook kunnen veranderen. Dan zou je zeggen, ok waarom verplaats je niet gewoon de letter "a" naar de plek in de bit stream die jij wilt? Nou stel dat ik dat zou doen, dan zou het woord "hallo" niet meer correct verschijnen in het .txt bestand, het woord zou dan namelijk veranderen en daarmee de betekenis en dat wil ik dus niet.
Ik wil dus aan een hex-pair een offset geven die ik wil, maar zonder de volgorde te veranderen! Dat betekent dat "61" dus best als offset "00000007" mag krijgen, want dat is hoger dan "00000000", dus de "a" zal dan altijd na de "h" komen. De letters die na de "a" komen zullen dan een offset moeten krijgen welke hoger is dan "00000007" om de volgorde van de letters in stand te houden. Ik wil de offsets van de hex-pair vervolgens schrijven naar de hard disk.
Mijn vraag is dus, hoe kan ik de offset van een hex-pair blijvend veranderen in C++? (Blijvend, dus opgeslagen op de hard disk.)
[ Voor 3% gewijzigd door Arcane Apex op 16-08-2010 14:27 ]