[php/eps] hoe de XOR checksum van een header berekenen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
ik heb in php een EPS generator gemaakt die adh van userdata een grafiek genereert. nu moet hier een preview aan toegevoegd worden zodat Quark Xpress dit ook in de opmaak kan laten zien. er is een aantal mogelijkheden om een preview te embedden in EPS. ik heb gekozen voor DOS EPS Binary Tiff. deze genereer ik met GhostScript.

welnu, ik moet een header meesturen van 32 bytes, waarvan de laatste 4 bestemd zijn voor een checksum van de voorgaande 28 bytes. deze checksum is een XOR van bytes 0 - 27. hoe doe ik dat? voor een XOR heb je toch altijd 2 waardes nodig?

de Adobe documentatie:
DOS EPS Binary File Header

0-3 : Must be hex C5D0D3C6 (byte 0=C5)
4-7 : Byte position in file for start of PostScript language code section.
8-11 : Byte length of PostScript language section
12-15 : Byte position in file for start of Metafile screen representation.
16-19 : Byte length of Metafile section (PSize)
20-23 : Byte position of TIFF representation
24-27 : Byte length of TIFF section
28-29 : Checksum of header (XOR of bytes 0-27)

NOTE: if Checksum is FFFF then it is to be ignored.
zie ook http://www.asmail.be/msg0054967466.html

heeft iemand hier uberhaupt ervaringen mee? er is namelijk vrij weinig goede documentatie over te vinden; ik weet bijv. niet hoe de binaire Tiff data achteraan de EPS geplakt moet worden (gewoon als een binary blok of base64, of chunked).

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Hier staat een voorbeeld hoe je in C een one-byte checksum berekent, misschien is dat wat je zoekt? :?

Overigens zou ik zelf de checksum uitzetten door die op FFFF te zetten.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • js303
  • Registratie: April 2003
  • Laatst online: 01-06 10:17
ok, het is uiteindelijk een simpel functietje geworden. $input is een reeks chars.

PHP:
1
2
3
4
5
function calc_checksum($input) {
    $checksum = 0;
    for ($i = 0; $i < strlen($input); $i++) $checksum = $checksum ^ ord($input{$i});
    return $checksum;
}

[ Voor 9% gewijzigd door js303 op 28-07-2004 17:42 ]