pack

(PHP 4, PHP 5, PHP 7, PHP 8)

pack β€” Π£ΠΏΠ°ΠΊΡƒΠ²Π°Ρ‚ΠΈ Π΄Π°Π½Ρ– Π² Π±Ρ–Π½Π°Ρ€Π½ΠΈΠΉ рядок

Опис

pack(string $format, mixed ...$values): string

Π£ΠΏΠ°ΠΊΠΎΠ²ΡƒΡ” Π·Π°Π΄Π°Π½Ρ– Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Ρƒ Π±Ρ–Π½Π°Ρ€Π½ΠΈΠΉ рядок Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΎ Π΄ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ– format

ІдСя Ρ†Ρ–Ρ”Ρ— Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Π±ΡƒΠ»Π° Π·Π°ΠΏΠΎΠ·ΠΈΡ‡Π΅Π½Π° Π· Perl Ρ– всі ΠΊΠΎΠ΄ΠΈ форматування ΠΏΡ€Π°Ρ†ΡŽΡŽΡ‚ΡŒ Ρ‚Π°ΠΊ само. Однак Ρ” дСякі відсутні ΠΊΠΎΠ΄ΠΈ форматування, Ρ‚Π°ΠΊΡ– як ΠΊΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Perl "u".

НСобхідно ΠΌΠ°Ρ‚ΠΈ Π½Π° ΡƒΠ²Π°Π·Ρ–, Ρ‰ΠΎ Π²Ρ–Π΄ΠΌΡ–Π½Π½Ρ–ΡΡ‚ΡŒ ΠΌΡ–ΠΆ Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΌΠΈ Ρ‚Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΌΠΈ значСннями Π²ΠΏΠ»ΠΈΠ²Π°Ρ” лишС Π½Π° Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ unpack(), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ функцияpack() Π΄Π°Ρ” ΠΎΠ΄Π½Π°ΠΊΠΎΠ²ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для Π·Π½Π°ΠΊΠΎΠ²ΠΈΡ… Ρ‚Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΡ… ΠΊΠΎΠ΄Ρ–Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π²

format

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€format Π·Π°Π΄Π°Ρ”Ρ‚ΡŒΡΡ Ρƒ вигляді рядка Ρ– ΡΠΊΠ»Π°Π΄Π°Ρ”Ρ‚ΡŒΡΡ Π· ΠΊΠΎΠ΄Ρ–Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Ρ‚Π° ΠΎΠΏΡ†Ρ–ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ повторСння. АргумСнт ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ цілочислСнним, Π°Π±ΠΎ * для повторСння остаточно Π²Π²Π΅Π΄Π΅Π½ΠΈΡ… Π΄Π°Π½ΠΈΡ…. Для a, A, h, H число ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΡŒ Π²ΠΈΠ·Π½Π°Ρ‡Π°Ρ” Ρ‚Π΅, ΡΠΊΡ–Π»ΡŒΠΊΠΈ символів взято Π²Ρ–Π΄ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ Π΄Π°Π½ΠΈΡ…, для @ - Ρ†Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π° позиція для розміщСння наступних Π΄Π°Π½ΠΈΡ…, для Ρ€Π΅ΡˆΡ‚ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΡŒ Π²ΠΈΠ·Π½Π°Ρ‡Π°Ρ” як Π±Π°Π³Π°Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ–Π² Π΄Π°Π½ΠΈΡ… Π±ΡƒΠ»ΠΎ ΠΎΠ±Ρ€ΠΎΠ±Π»Π΅Π½ΠΎ Ρ– ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΡƒΡŽΡ‡ΠΈΠΉ Π±Ρ–Π½Π°Ρ€Π½ΠΈΠΉ рядок .

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ, Ρ‰ΠΎ ΠΏΡ€Π°Ρ†ΡŽΡŽΡ‚ΡŒ Π½Π° Π΄Π°Π½ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚:

Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ–Π² Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— pack()

КодОпис
aРядок (string) з NUL-заповнСнням
AРядок (string) Π·Ρ– SPACE-заповнСнням
hHex-рядок (Hex string), Π· ниТнього розряду
HHex-рядок (Hex string), Π· Π²Π΅Ρ€Ρ…Π½ΡŒΠΎΠ³ΠΎ розряду
cзнаковий символ (char)
CбСззнаковий символ (char)
sΠ·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ short (Π·Π°Π²ΠΆΠ΄ΠΈ 16 Π±Ρ–Ρ‚, машинний Π±Π°ΠΉΡ‚ΠΎΠ²ΠΈΠΉ порядок)
SΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ short (Π·Π°Π²ΠΆΠ΄ΠΈ 16 Π±Ρ–Ρ‚, машинний Π±Π°ΠΉΡ‚ΠΎΠ²ΠΈΠΉ порядок)
nΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ short (Π·Π°Π²ΠΆΠ΄ΠΈ 16 Π±Ρ–Ρ‚, порядок big endian)
vΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ short (Π·Π°Π²ΠΆΠ΄ΠΈ 16 Π±Ρ–Ρ‚, порядок little endian)
iΠ·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ integer (машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΉ Ρ€ΠΎΠ·ΠΌΡ–Ρ€ Ρ‚Π° порядок)
IΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ integer (машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΉ Ρ€ΠΎΠ·ΠΌΡ–Ρ€ Ρ‚Π° порядок)
lΠ·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long (Π·Π°Π²ΠΆΠ΄ΠΈ 32 Π±Ρ–Ρ‚, машинний порядок)
LΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long (Π·Π°Π²ΠΆΠ΄ΠΈ 32 Π±Ρ–Ρ‚, машинний порядок)
NΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long (Π·Π°Π²ΠΆΠ΄ΠΈ 32 Π±Ρ–Ρ‚, порядок big endian)
VΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long (Π·Π°Π²ΠΆΠ΄ΠΈ 32 Π±Ρ–Ρ‚, порядок little endian)
qsigned long long (Π·Π°Π²ΠΆΠ΄ΠΈ 64 bit, машинний порядок)
QΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long long (Π·Π°Π²ΠΆΠ΄ΠΈ 64 bit, машинний порядок)
JΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long long (Π·Π°Π²ΠΆΠ΄ΠΈ 64 bit, порядок big endian)
PΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΉ long long (Π·Π°Π²ΠΆΠ΄ΠΈ 64 bit, порядок little endian)
ffloat (машинно-Π·Π°Π»Π΅ΠΆΠ½Ρ– Ρ€ΠΎΠ·ΠΌΡ–Ρ€ Ρ‚Π° уявлСння)
gfloat (машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΉ Ρ€ΠΎΠ·ΠΌΡ–Ρ€, порядок Π±Π°ΠΉΡ‚ little endian)
Gfloat (машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΉ Ρ€ΠΎΠ·ΠΌΡ–Ρ€, порядок Π±Π°ΠΉΡ‚ big endian)
ddouble (машинно-Π·Π°Π»Π΅ΠΆΠ½Ρ– Ρ€ΠΎΠ·ΠΌΡ–Ρ€ Ρ‚Π° уявлСння)
edouble (машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΉ Ρ€ΠΎΠ·ΠΌΡ–Ρ€, порядок Π±Π°ΠΉΡ‚ little endian)
Edouble (машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΉ Ρ€ΠΎΠ·ΠΌΡ–Ρ€, порядок Π±Π°ΠΉΡ‚ big endian)
xΠ±Π°ΠΉΡ‚ NUL
XРСзСрвування ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°
ZРядок (string) з NUL-заповнСнням
@NUL-заповнСння Π΄ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΡ— ΠΏΠΎΠ·ΠΈΡ†Ρ–Ρ—

values

ЗначСння, Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒΡΡ

ΠŸΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” Π±Ρ–Π½Π°Ρ€Π½ΠΈΠΉ рядок, який ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Ρ–.

список Π·ΠΌΡ–Π½

Π’Π΅Ρ€ΡΠΈΡΠžΠΏΠΈΡ
8.0.0Ѐункція Π±Ρ–Π»ΡŒΡˆΠ΅ Π½Π΅ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” **false**Π² случаС возникновСния ошибки.
7.2.0Π’ΠΈΠΏΠΈ float Ρ– double ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡŽΡ‚ΡŒ як Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΈΠΉ, Ρ– прямий порядок ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρ– Π±Π°ΠΉΡ‚Ρ–Π².
7.0.15,7.1.1Π”ΠΎΠ΄Π°Π½Ρ– ΠΊΠΎΠ΄ΠΈ "e", "E", "g" Ρ‚Π° "G" для ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠΊΠΈ примусової Π²ΠΊΠ°Π·Ρ–Π²ΠΊΠΈ порядку Π±Π°ΠΉΡ‚ для float Ρ‚Π° double.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #1 ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ використання pack()****

Loading...

ΠžΡ‚Ρ€ΠΈΠΌΠ°Π½ΠΈΠΉ Π±Ρ–Π½Π°Ρ€Π½ΠΈΠΉ рядок довТиною 6 Π±Π°ΠΉΡ‚ міститимС ΠΏΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ Π±Π°ΠΉΡ‚Ρ–Π² 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

ΠŸΡ€ΠΈΠΌΡ–Ρ‚ΠΊΠΈ

ЗастСрСТСння

PHP Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ” значСння Ρ‚ΠΈΠΏΡƒ int як Π·Π½Π°ΠΊΠΎΠ²Ρ– Π· машинно-Π·Π°Π»Π΅ΠΆΠ½ΠΈΠΌ Ρ€ΠΎΠ·ΠΌΡ–Ρ€ΠΎΠΌ (C Ρ‚ΠΈΠΏ long). Всі числа, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ– як int, Π°Π»Π΅ Π²ΠΈΡ…ΠΎΠ΄ΡΡ‚ΡŒ Π·Π° ΠΌΠ΅ΠΆΡ– Ρ†ΡŒΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ΡŒ Π·Π±Π΅Ρ€Π΅ΠΆΠ΅Π½Ρ– Π· Ρ‚ΠΈΠΏΠΎΠΌ float. Π£ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ†Ρ– Ρ†ΠΈΡ… float як int, Π²ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ– Π· Ρ‚ΠΈΠΏΠΎΠΌ int. Π¦Π΅ ΠΌΠΎΠΆΠ΅ збігатися, Ρ‚Π°ΠΊ Ρ– Π½Π΅ΠΌΠ°Ρ” Ρ–Π· Π·Π°Π΄Π°Π½ΠΈΠΌ шаблоном.

ΠΠ°ΠΉΡ‡Π°ΡΡ‚Ρ–ΡˆΠΈΠΌ Ρ” Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, ΠΊΠΎΠ»ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ– числа Ρ‚ΠΈΠΏΡƒ int. Π£ систСмах, Π΄Π΅ int ΠΌΠ°Ρ” Ρ€ΠΎΠ·ΠΌΡ–Ρ€ 32 Π±Ρ–Ρ‚Π°, число Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ”Ρ‚ΡŒΡΡ Π·Π° Ρ‚ΠΈΠΌ самим шаблоном, якби int Π±ΡƒΠ² Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈΠΌ (Ρ…ΠΎΡ‡Π°, Ρ†Π΅ Π·Π°Π»Π΅ΠΆΠΈΡ‚ΡŒ Π²Ρ–Π΄ ΠΏΠ΅Π²Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΡŒ Ρ–Π· Π·Π½Π°ΠΊΠΎΠ²Π΅ Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Π΅, Π·Π³Ρ–Π΄Π½ΠΎ Π·Ρ– стандартом Π‘). Π£ систСмах, Π΄Π΅ Ρ‚ΠΈΠΏ int ΠΌΠ°Ρ” Ρ€ΠΎΠ·ΠΌΡ–Ρ€ 64 Π±Ρ–Ρ‚Π°, Ρ‚ΠΈΠΏ float Π½Π΅ ΠΌΠ°Ρ” мантиси, Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎΡ— Π·Π° Ρ€ΠΎΠ·ΠΌΡ–Ρ€ΠΎΠΌ для збСрігання значСння Π±Π΅Π· Π²Ρ‚Ρ€Π°Ρ‚ΠΈ точності. Π―ΠΊΡ‰ΠΎ Ρ†Ρ– систСми Ρ‚Π°ΠΊΠΎΠΆ ΠΌΠ°ΡŽΡ‚ΡŒ простий 64-Π±Ρ–Ρ‚Π½ΠΈΠΉ Ρ‚ΠΈΠΏ int (Π‘Ρ–Π»ΡŒΡˆΡ–ΡΡ‚ΡŒ UNIX систСм Π½Π΅ ΠΌΠ°ΡŽΡ‚ΡŒ), Ρ‚ΠΎ Ρ”Π΄ΠΈΠ½ΠΈΠΌ ΡˆΠ»ΡΡ…ΠΎΠΌ для використання Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ I Ρƒ Π²Π΅Ρ€Ρ…Π½ΡŒΠΎΠΌΡƒ розряді Ρ” створСння Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΈΡ… int Π·Π½Π°Ρ‡Π΅Π½ΡŒ Π· Ρ‚ΠΈΠΌ самим уявлСнням як Ρ– ΠΏΠ΅Π²Π½ΠΎΠΌΡƒ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½Π½Ρ–.

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ

  • unpack() - Π ΠΎΠ·ΠΏΠ°ΠΊΡƒΠ²Π°Ρ‚ΠΈ Π΄Π°Π½Ρ– Π· Π±Ρ–Π½Π°Ρ€Π½ΠΎΠ³ΠΎ рядка