Hướng dẫn pack unpack in php - gói giải nén trong php

(Php 4, Php 5, Php 7, Php 8)

Gói - Gói dữ liệu vào chuỗi nhị phânPack data into binary string

Sự mô tả

Gói (Chuỗi $format, hỗn hợp ...$values): Chuỗi(string $format, mixed ...$values): string

Ý tưởng cho chức năng này được lấy từ Perl và tất cả các mã định dạng hoạt động giống như trong Perl. Tuy nhiên, có một số mã định dạng bị thiếu như mã định dạng "U" của Perl.

Lưu ý rằng sự khác biệt giữa các giá trị đã ký và không dấu chỉ ảnh hưởng đến hàm unpack (), trong đó AS AS PACK () cho kết quả tương tự cho các mã định dạng đã ký và không dấu.unpack(), where as function pack() gives the same result for signed and unsigned format codes.

Thông số

format

Chuỗi format bao gồm các mã định dạng theo sau là một đối số lặp lại tùy chọn. Đối số lặp lại có thể là giá trị số nguyên hoặc * để lặp lại đến cuối dữ liệu đầu vào. Đối với A, A, H, H, số lần lặp lại chỉ định có bao nhiêu ký tự của một đối số dữ liệu được thực hiện, vì @ đó là vị trí tuyệt đối để đặt dữ liệu tiếp theo, cho mọi thứ khác, số lần lặp lại chỉ định số lượng đối số dữ liệu được tiêu thụ và Đóng gói vào chuỗi nhị phân kết quả.

Các định dạng hiện đang được triển khai là:

Gói () ký tự định dạng format characters
Mã sốSự mô tả
Gói (Chuỗi $format, hỗn hợp ...$values): Chuỗi Ý tưởng cho chức năng này được lấy từ Perl và tất cả các mã định dạng hoạt động giống như trong Perl. Tuy nhiên, có một số mã định dạng bị thiếu như mã định dạng "U" của Perl.
Lưu ý rằng sự khác biệt giữa các giá trị đã ký và không dấu chỉ ảnh hưởng đến hàm unpack (), trong đó AS AS PACK () cho kết quả tương tự cho các mã định dạng đã ký và không dấu.Thông số
format Chuỗi format bao gồm các mã định dạng theo sau là một đối số lặp lại tùy chọn. Đối số lặp lại có thể là giá trị số nguyên hoặc * để lặp lại đến cuối dữ liệu đầu vào. Đối với A, A, H, H, số lần lặp lại chỉ định có bao nhiêu ký tự của một đối số dữ liệu được thực hiện, vì @ đó là vị trí tuyệt đối để đặt dữ liệu tiếp theo, cho mọi thứ khác, số lần lặp lại chỉ định số lượng đối số dữ liệu được tiêu thụ và Đóng gói vào chuỗi nhị phân kết quả.
Các định dạng hiện đang được triển khai là:Gói () ký tự định dạng
Mã sốmột
Chuỗi nulMột
Chuỗi không gianh
Chuỗi hex, ít nibble đầu tiênH
Chuỗi hex, nibble cao đầu tiênc
Đã ký charC
Char không dấuS
Đã ký ngắn (luôn luôn 16 bit, đơn đặt hàng byte)S
không dấu ngắn (luôn luôn 16 bit, đơn đặt hàng byte)N
không dấu ngắn (luôn luôn 16 bit, đơn đặt hàng byte endian lớn)v
không dấu ngắn (luôn luôn 16 bit, thứ tự byte endian nhỏ)tôi
Số nguyên đã ký (kích thước phụ thuộc máy và thứ tự byte)Tôi
Số nguyên không dấu (kích thước phụ thuộc máy và thứ tự byte)l
Đã ký Long (luôn luôn 32 bit, đơn đặt hàng byte)L
không dấu dài (luôn luôn 32 bit, đơn đặt hàng byte)N
không dấu dài (luôn luôn 32 bit, đơn đặt hàng byte endian lớn)V
không dấu dài (luôn luôn 32 bit, đơn hàng byte endian nhỏ)Q.
Đã ký lâu dài (luôn luôn 64 bit, đơn đặt hàng byte)Q.
không dấu dài (luôn luôn 64 bit, đơn đặt hàng byte)J
không dấu dài (luôn luôn 64 bit, đơn đặt hàng byte endian lớn)P
không dấu dài (luôn luôn là 64 bit, thứ tự byte endian nhỏ)f
Float (kích thước và biểu diễn phụ thuộc máy)g
Float (kích thước phụ thuộc máy, thứ tự byte endian nhỏ)G
Float (kích thước phụ thuộc máy, thứ tự byte endian lớn)d
Double (kích thước và biểu diễn phụ thuộc máy) Ý tưởng cho chức năng này được lấy từ Perl và tất cả các mã định dạng hoạt động giống như trong Perl. Tuy nhiên, có một số mã định dạng bị thiếu như mã định dạng "U" của Perl.
Lưu ý rằng sự khác biệt giữa các giá trị đã ký và không dấu chỉ ảnh hưởng đến hàm unpack (), trong đó AS AS PACK () cho kết quả tương tự cho các mã định dạng đã ký và không dấu.Thông số
format

Chuỗi format bao gồm các mã định dạng theo sau là một đối số lặp lại tùy chọn. Đối số lặp lại có thể là giá trị số nguyên hoặc * để lặp lại đến cuối dữ liệu đầu vào. Đối với A, A, H, H, số lần lặp lại chỉ định có bao nhiêu ký tự của một đối số dữ liệu được thực hiện, vì @ đó là vị trí tuyệt đối để đặt dữ liệu tiếp theo, cho mọi thứ khác, số lần lặp lại chỉ định số lượng đối số dữ liệu được tiêu thụ và Đóng gói vào chuỗi nhị phân kết quả.

Các định dạng hiện đang được triển khai là:false on failure.

Gói () ký tự định dạng

Mã sốSự mô tả
8.0.0 mộtfalse on failure.
7.2.0 Chuỗi nul and double types supports both Big Endian and Little Endian.
7.0.15,7.1.1 Một

Chuỗi không gian

hpack() example

$binarydata pack("nvc*"0x12340x56786566);
?>

Chuỗi hex, ít nibble đầu tiên

H

Chuỗi hex, nibble cao đầu tiên

cint values as signed values of a machine-dependent size (C type long). Integer literals and operations that yield numbers outside the bounds of the int type will be stored as float. When packing these floats as integers, they are first cast into the integer type. This may or may not result in the desired byte pattern.

Đã ký charint type if it were unsigned. In systems where the int type has a 32-bit size, the cast usually results in the same byte pattern as if the int were unsigned (although this relies on implementation-defined unsigned to signed conversions, as per the C standard). In systems where the int type has 64-bit size, the float most likely does not have a mantissa large enough to hold the value without loss of precision. If those systems also have a native 64-bit C ...$values0 type (most UNIX-like systems don't), the only way to use the ...$values1 pack format in the upper range is to create int negative values with the same byte representation as the desired unsigned value.

C

  • Char không dấu

S

Đã ký ngắn (luôn luôn 16 bit, đơn đặt hàng byte)

...$values2

...$values3

...$values4

...$values5

S

không dấu ngắn (luôn luôn 16 bit, đơn đặt hàng byte)

...$values6

...$values7

...$values8

N

không dấu ngắn (luôn luôn 16 bit, đơn đặt hàng byte endian lớn)

...$values9

format0

format1

...$values8

v

không dấu ngắn (luôn luôn 16 bit, thứ tự byte endian nhỏ)

format3

format4

...$values8

tôi

Số nguyên đã ký (kích thước phụ thuộc máy và thứ tự byte)

format6

format7

...$values8

Tôi

Số nguyên không dấu (kích thước phụ thuộc máy và thứ tự byte)

format9

format0

format1

format2

Patrik fimml ¶

17 năm trước

format3

format4

...$values8

ru ¶

5 năm trước

format6

Ammar Hameed ¶

12 năm trước

format7

format8

...$values8