[PHP]Bedeutung - 0x21 / 0x2C / 0x3B

Matthiasnet

Well-known member
ID: 116869
L
14 August 2006
271
7
Hallo,

kennt jemand zufllig die genauere Bedeutung von 0x21 / 0x2C / 0x3B ?

Hinetrgrund: Möchte gerne eine .gif Datei mit Hilfe von fpdf anzeigen lassen.

Nun habe ich erfahren, dass am Anfang einer Gif Datei immer 0x21 oder 0x2C stehen muss, und am Ende 0x3B.
Habe die Datei mal mit einem .txt Editor geöffnet, jedoch steht am Anfang nichts von diesen Zeichen, sondern lediglich GIF89a.
Bedeutet vll. G in "Computersprache" 0x21 oder 0x2C ?

Außer einer kompletten Liste mit mehr von diesen merkwürdigen Zeichen finde ich nichts bei google, schon gar nicht in Bezug auf gif-dateien.

Wäre deshalb für Hilfe oder passender Lektüre dankbar

Matthiasnet
 
Das sind Hex-Zahlen:
0x21 = 33
0x2C = 44
0x3B = 59

Danke, jetzt lässt sich das ganez auch übersetzen ;)

0x21 = 33 = !
0x2C = 44 = ,
0x3B = 59 = ;

Nun stellt sich mir noch folgende Frage...warum muss eine gif-Datei mit ! oder , anfangen? Hab beispielsweiße eine .gif erstellt und am Anfang steht GIF89a und bei anderen gif Dateien war es genau so...also keine Spur von ! oder ,

Ein Beispiel, wo dieses voruasgesetzt wird:
https://gifs.hu/phpclasses/show.php?src=GIFDecoder.class.php

Speziel hier:
PHP:
switch ( $this->GIF_buffer [ 0 ] ) {
	case 0x21:
		GIFDecoder::GIFReadExtensions ( );
		break;
	case 0x2C:
		GIFDecoder::GIFReadDescriptor ( );
		break;
	case 0x3B:
		$cycle = 0;
		break;
}
Hier wird meine Vermutung ganz klar voruasgesetzt...da gibts sozusagen nichts anderes. Auf meinem Fall bezogen, würde nach Einbau eines default dieser ausgegeben werden.
 
Hi,

den Anfang (Header) eines Bildes im GIF-Format nach der Spezifikation gif89a bildet "GIF89a".

Zu den verschiedenen Hex-Codes:
:arrow: 0x3B bedeutet das Ende des gif-Datenstroms
:arrow: 0x21 steht am Anfang eines extension-Blocks
:arrow: 0x2C steht am Beginn eines image-descriptor

Genaueres dazu gibts hier
 
danke dir, werd mich da mal durchschlagen;)

Bzw. noch eine kurze Frage, dann müsste doch dieses auf gif Dateien zutreffen oder welche begründung könnte es geben, dass man bei dieser Abfrage in den else-Zweig gerät? (nach Test mit mehreren gif-Bildern)
 
Bzw. noch eine kurze Frage, dann müsste doch dieses auf gif Dateien zutreffen oder welche begründung könnte es geben, dass man bei dieser Abfrage in den else-Zweig gerät? (nach Test mit mehreren gif-Bildern)

Übergibst du vielleicht an die Klasse der Instanzierung den Parameter $GIF_pointer falsch? Das wäre der einzige Fehler, den ich mir jetzt auf die Schnelle vorstellen könnte.
Vielleicht hilft dir das GifBuilder-Package hier ja weiter, um die Klasse richtig zu verwenden.
 
Ne liegt nicht daran.
Der Server wurde von PHP4 auf PHP5 umgestellt und deshalb klappts aus iregndeinem Grund nicht mehr und verusche weiterhin das genaue Problem zu analysiere
Vll. hat sich ja eine Funktion verändert...denn GIF_buffer enthält G (den ersten Buchstaben der Datei, wenn diese geöffnet wird), nur wird der Header wohl nicht berücksichtigt, den du ansprichst

EDIT:
Hab mir jetzt mal diue Website durchgelesen und steht egnau das was du sagst:

GIF89a
i) Extension Introducer - Identifies the beginning of an extension
block. This field contains the fixed value 0x21.
-> das gleiche nochmal für GIF87a und 0x3B


Dann geh ich davon aus das sich wirlich eine Funktion durch das update verändert haben muss...denn wie es aussieht, erhält man nachdem man die Datei mit fread() öffnet und sich davon das {0}-Zeichen rausholt, nicht mehr das Zeichen der Header-Datei.

EDIT2:
Ok, Problem liegt in eienr ganz anderen Klasse....es muss wohl ein Teil des ersten Quellcodes der gif Datei entfernt werden....diese Zahl wird anscheinend aflsch ermittelt
 
Zuletzt bearbeitet:
So, hab den Fehler.
Ein Beispiel:

PHP:
<?
function test(&$referenz)
	{
		$referenz = 0;
		$referenz++;
		$referenz=$referenz+4;
		return true;
	}

if(test($referenz = 0)) {
	echo "Alles Bestens:".$referenz ;
}
?>

Ausgabe auf einem PHP4-Server: 5
Ausgabe auf einem PHP5-Server: 0

Ist ja schon ne heftige Änderung wie ich finde...im Internet hab ich was darüber gelesen, dass "allow_call_time_pass_reference" auf true gesetzt werden sollte - hilft aber leider auch nicht weiter.
Weiß da jemand eine Alternative, wie ich diese "Änderung der Daten" in php5 hinbiegen kann? (ohen das ich jetzt überall Rückgabewerte oder Eigenschaften erstelle - am liebsten auf Basis der Referenzen)

Grüße

Matthiasnet


EDIT:
Danke, habs geschafft.
Musste = 0 weglassen, nun klappts auch wieder
 
Zuletzt bearbeitet: