(PHP 4, PHP 5, PHP 7)
pack — Veriyi bir ikil dizge halinde paketler
Belirtilen değiştirgeleri belirtilen biçem
biçeminde
bir ikil bir dizge olarak paketler.
Anafikir Perl'den alınmış olup, tüm biçemleme kodları Perl'deki gibi çalışır. Ancak, biçemleme türleri aynı değildir, örneğin "u" biçemi Perl'de yoktur.
Şuna dikkat edin: İşaretli ve işaretsiz değerler arasındaki ayrım sadece unpack() işlevini etkiler. pack() işlevi her ikisi için de aynı sonuçları üretir.
Ayrıca, şuna da dikkat edin: PHP, işaretli değerleri makineye bağımlı tamsayı değerler olarak saklar. Eğer float türünde tam hassasiyetle saklanamayacak kadar büyük bir işaretsiz tamsayı verirseniz istenmeyen sonuçlar alabilirsiniz.
biçem
biçem
dzgesi isteğe bağlı bir yineleme
değiştirgesi ile öncelenmiş biçem kodlarından oluşur. Yineleme
değiştirgesi bir tamsayı değer veya girdi verisinin sonuna kadar
yineleme belirten bir * olabilir. a, A, h, H için
yineleme sayısı, bir veri değiştirgesinden kaç karakter alındığını
belirtir. @ için yineleme sayısı ise, sonraki verinin konacağı mutlak
konumu belirtir. Bunlar dışında kalan herşey için yineleme sayısı,
sonuçlanan ikil dizgede paketlenmek üzere kaç tane veri argümanın
toplanacağını belirtir.
Şimdilik gerçeklenmiş biçemler:
Kod | Açıklama |
---|---|
a | NUL-dolgulu dizge |
A | BOŞLUK dolgulu dizge |
h | Onaltılık dizge, küçük dörtlü önce gelir |
H | Onaltılık dizge, büyük dörtlü önce gelir |
c | işaretli bayt |
C | işaretsiz bayt |
s | İşaretli kısa tamsayı (daima 16 bit olup, makine bayt sıralamasındadır) |
S | İşaretsiz kısa tamsayı (daima 16 bit olup, makine bayt sıralamasındadır) |
n | İşaretsiz kısa tamsayı (daima 16 bit olup, en kıymetli bayt baştadır) |
v | İşaretsiz kısa tamsayı (daima 16 bit olup, en kıymetsiz bayt baştadır) |
i | İşaretli tamsayı (boyut ve bayt sıralaması makineye bağlıdır) |
I | İşaretsiz tamsayı (boyut ve bayt sıralaması makineye bağlıdır) |
l | İşaretli uzun tamsayı (daima 32 bit olup, makine bayt sıralamasındadır) |
L | İşaretsiz uzun tamsayı (daima 32 bit olup, makine bayt sıralamasındadır) |
N | İşaretsiz uzun tamsayı (daima 32 bit olup, en kıymetli bayt baştadır) |
V | İşaretsiz uzun tamsayı (daima 32 bit olup, en kıymetsiz bayt baştadır) |
f | Tek hassasiyetli gerçek sayı - float (boyut ve gösterim makineye bağlıdır) |
d | Çift hassasiyetli gerçek sayı - double (boyut ve gösterim makineye bağlıdır) |
x | NUL bayt (0. karakter) |
X | Bir baytlık yedek |
@ | Bir mutlak konuma kadar NUL dolgu |
değiştirgeler
Veriyi içeren bir ikil dizge döner.
Örnek 1 - pack() örneği
<?php
$ikilveri = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>
Elde edilen ikil dizge 6 bayt uzunlukta olur ve sırayla 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 baytlarını içerir.