LSpreee: Binärdateien

Beitrag lesen

Hallo,
ich möchte Binärdateien mit php lesen. Bin noch bei den Grundlagen.
Habe im Forum einen Beitrag von vor einem Jahr gefunden.

Ich versuche anhand dieser Beispiele und der Dokumentation von pack() mir alles herzuleiten.

Ok.

// BSP 1

$test_int = pack('VVV', 1262698832, 44927, 128 );  
$out_int  = unpack('V1myvar/V1yourvar/V1ourvar', $test_int);  
var_dump($out_int);  
  
// BSP 2  
$test_mix = pack('a56@56VV', 'irgendeinstring', 44927, 128);  
$pos      = strpos($data, chr(0));  
$out_mix  = unpack('a' . ( $pos ? (string)$pos : '56' ) . 'var1/@56/V1var2/V1var3', $test_mix);  
var_dump($out_mix);

Output:
  ~~~php array
    'myvar' => int 1262698832
    'yourvar' => int 44927
    'ourvar' => int 128

array
    'var1' => string 'irgendeinstring' (length=15)
    'var2' => int 44927
    'var3' => int 128

  
  
Fragen:  
1) was ist das NUL-Element von dem bei [pack()](http://de.php.net/manual/de/function.pack.php) (unter a und @) die Rede ist?  
  
2) warum gibt es beim Mixbeispiel im pack im Prinzip vier Formatanzeiger: a56, @56 und zwei mal V und nur drei Werte ("irgendeinstring", 44927, 128). Was habe ich da missverstanden?  
  
3) Warum komme ich nicht mit  
  
~~~php
$out_mix2  = unpack('a56V2', $test_mix);  
var_dump($out_mix2);

Output
  ~~~php 'V2' => string 'irgendeinstring' (length=15)

  
oder:  
`$out_mix2  = unpack('a56/V2', $test_mix);`{:.language-php}  
  
  Output:  
  ~~~php
array  
    1 => int 44927  
    2 => int 128  

an den Inhalt von $test_mix?

Durch die Antworten hoffe ich ein besseres Verständnis für Binärformate zu erhalten.

Liebe Grüße,
LSpreee