الفرق بين المراجعتين لصفحة: «PHP/pack»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) تعديلات طفيفة على التنسيق |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الدالة <code>pack()</code> في PHP}}</noinclude> | <noinclude>{{DISPLAYTITLE:الدالة <code>pack()</code> في PHP}}</noinclude> | ||
(PHP 4, PHP 5, PHP 7) | (PHP 4, PHP 5, PHP 7) | ||
تحزمُ الدالةُ pack() البيانات في سلسلة نصية ثنائية. | |||
تحزمُ الدالةُ <code>pack()</code> البيانات في سلسلة نصية ثنائية. | |||
== الوصف == | == الوصف == | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
string pack ( string $format [, mixed $args [, mixed $... ]] ) | string pack ( string $format [, mixed $args [, mixed $... ]] ) | ||
</syntaxhighlight>تحزمُ الدالةُ pack() البيانات في سلسلة نصية ثنائية وِفْقَ المعامل format. | </syntaxhighlight>تحزمُ الدالةُ <code>pack()</code> البيانات في سلسلة نصية ثنائية وِفْقَ المعامل <code>format</code>. | ||
أُخِذَتْ فكرةُ الدالةِ pack() من لغة البرمجة Perl وجميع رموز التنسيق تعمل كما هو الحال في Perl. ومع ذلك، هناك بعض رموز التنسيق مفقودة مثل رمز التنسيق "u" الخاص بلغة Perl. | أُخِذَتْ فكرةُ الدالةِ <code>pack()</code> من لغة البرمجة Perl وجميع رموز التنسيق تعمل كما هو الحال في Perl. ومع ذلك، هناك بعض رموز التنسيق مفقودة مثل رمز التنسيق "u" الخاص بلغة Perl. | ||
لاحظ أن التمييز بين القيم المؤشرة وغير المؤشرة يؤثر فقط على الدالةِ | لاحظ أن التمييز بين القيم المؤشرة وغير المؤشرة يؤثر فقط على الدالةِ <code>[[PHP/unpack|unpack()]]</code>، إذ تعطي الدالةُ <code>pack()</code> نفس النتيجة للشيفرات المؤشرة وغير المؤشرة. | ||
== المعاملات == | == المعاملات == | ||
=== format === | === <code>format</code> === | ||
تتكون سلسلة المعامل format من شيفرات التنسيق متبوعةً بوسيط اختياري للتكرار. يمكن أن تكون الوسيط repeater إما قيمة صحيحة أو * للتكرار إلى نهاية بيانات الإدخال. | تتكون سلسلة المعامل <code>format</code> من شيفرات التنسيق متبوعةً بوسيط اختياري للتكرار. يمكن أن تكون الوسيط repeater إما قيمة صحيحة أو * للتكرار إلى نهاية بيانات الإدخال. | ||
بالنسبة إلى a، و A، و h، و H يحدد عَدَّادُ التكرار عدد الأحرف التي أُخِذَت لوسيط وحيد يُمثِّل البيانات، أما بالنسبة للرمز @ فهو الموقع المطلق لوضع البيانات التالية، وبالنسبة لأي شيء آخر، فإن عَدَّادَ التكرار يحدد عدد وسائط البيانات التي استُهْلِكَت وحُزِمَت في السلسلة النصية الثنائية الناتجة. | بالنسبة إلى a، و A، و h، و H يحدد عَدَّادُ التكرار عدد الأحرف التي أُخِذَت لوسيط وحيد يُمثِّل البيانات، أما بالنسبة للرمز @ فهو الموقع المطلق لوضع البيانات التالية، وبالنسبة لأي شيء آخر، فإن عَدَّادَ التكرار يحدد عدد وسائط البيانات التي استُهْلِكَت وحُزِمَت في السلسلة النصية الثنائية الناتجة. | ||
سطر 21: | سطر 22: | ||
التنسيقات المتاحة حاليًا مذكورةٌ في جدول حروف التنسيق الآتي: | التنسيقات المتاحة حاليًا مذكورةٌ في جدول حروف التنسيق الآتي: | ||
{| class="wikitable" | {| class="wikitable" | ||
!الرمز | |||
!الوصف | |||
|- | |- | ||
|a | |a | ||
|سلسلة نصية محشوة بالمحرف NULL. | |سلسلة نصية محشوة بالمحرف [[PHP/null|NULL]]. | ||
|- | |- | ||
|A | |A | ||
سطر 43: | سطر 44: | ||
|- | |- | ||
|s | |s | ||
|نوع البيانات short المؤشَّر (دائما 16 بت، ترتيب بايت للجهاز). | |نوع البيانات <code>[[PHP/short|short]]</code> المؤشَّر (دائما 16 بت، ترتيب بايت للجهاز). | ||
|- | |- | ||
|S | |S | ||
|نوع البيانات short غير المؤشَّر (دائما 16 بت، ترتيب بايت للجهاز). | |نوع البيانات <code>[[PHP/short|short]]</code> غير المؤشَّر (دائما 16 بت، ترتيب بايت للجهاز). | ||
|- | |- | ||
|n | |n | ||
|نوع البيانات short غير المؤشَّر (دائمًا 16 بت، ترتيب البايت endian الكبير). | |نوع البيانات <code>[[PHP/short|short]]</code> غير المؤشَّر (دائمًا 16 بت، ترتيب البايت endian الكبير). | ||
|- | |- | ||
|v | |v | ||
|نوع البيانات short غير المؤشَّر (دائمًا 16 بت، ترتيب البايت endian الصغير). | |نوع البيانات <code>[[PHP/short|short]]</code> غير المؤشَّر (دائمًا 16 بت، ترتيب البايت endian الصغير). | ||
|- | |- | ||
|i | |i | ||
|نوع البيانات integer المؤشَّر (الإعتماد على حجم الجهاز وترتيب البايت). | |نوع البيانات <code>[[PHP/integer|integer]]</code> المؤشَّر (الإعتماد على حجم الجهاز وترتيب البايت). | ||
|- | |- | ||
|I | |I | ||
|نوع البيانات integer غير المؤشَّر (الإعتماد على حجم الجهاز وترتيب البايت). | |نوع البيانات <code>[[PHP/integer|integer]]</code> غير المؤشَّر (الإعتماد على حجم الجهاز وترتيب البايت). | ||
|- | |- | ||
|l | |l | ||
|نوع البيانات long المؤشَّر (دائما 32 بت، ترتيب بايت للجهاز). | |نوع البيانات <code>[[PHP/long|long]]</code> المؤشَّر (دائما 32 بت، ترتيب بايت للجهاز). | ||
|- | |- | ||
|L | |L | ||
|نوع البيانات long غير المؤشَّر (دائما 32 بت، ترتيب بايت للجهاز). | |نوع البيانات <code>[[PHP/long|long]]</code> غير المؤشَّر (دائما 32 بت، ترتيب بايت للجهاز). | ||
|- | |- | ||
|N | |N | ||
|نوع البيانات long غير المؤشَّر (دائمًا 32 بت، ترتيب البايت endian الكبير). | |نوع البيانات <code>[[PHP/long|long]]</code> غير المؤشَّر (دائمًا 32 بت، ترتيب البايت endian الكبير). | ||
|- | |- | ||
|V | |V | ||
|نوع البيانات long غير المؤشَّر (دائمًا 32 بت، ترتيب البايت endian الصغير). | |نوع البيانات <code>[[PHP/long|long]]</code> غير المؤشَّر (دائمًا 32 بت، ترتيب البايت endian الصغير). | ||
|- | |- | ||
|q | |q | ||
|نوع البيانات long long المؤشَّر (دائما 64 بت، ترتيب بايت للجهاز). | |نوع البيانات <code>[[PHP/long long|long long]]</code> المؤشَّر (دائما 64 بت، ترتيب بايت للجهاز). | ||
|- | |- | ||
|Q | |Q | ||
|نوع البيانات long long غير المؤشَّر (دائما 64 بت، ترتيب بايت للجهاز). | |نوع البيانات <code>[[PHP/long long|long long]]</code> غير المؤشَّر (دائما 64 بت، ترتيب بايت للجهاز). | ||
|- | |- | ||
|J | |J | ||
|نوع البيانات long long غير المؤشَّر (دائمًا 64 بت، ترتيب البايت endian الكبير). | |نوع البيانات <code>[[PHP/long long|long long]]</code> غير المؤشَّر (دائمًا 64 بت، ترتيب البايت endian الكبير). | ||
|- | |- | ||
|P | |P | ||
|نوع البيانات long long غير المؤشَّر (دائمًا 64 بت، ترتيب البايت endian الصغير). | |نوع البيانات <code>[[PHP/long long|long long]]</code> غير المؤشَّر (دائمًا 64 بت، ترتيب البايت endian الصغير). | ||
|- | |- | ||
|f | |f | ||
|نوع البيانات float (الإعتماد على حجم وتمثيل الجهاز). | |نوع البيانات <code>[[PHP/float|float]]</code> (الإعتماد على حجم وتمثيل الجهاز). | ||
|- | |- | ||
|g | |g | ||
|نوع البيانات float (الإعتماد على حجم الجهاز وترتيب البايت endian الصغير). | |نوع البيانات <code>[[PHP/float|float]]</code> (الإعتماد على حجم الجهاز وترتيب البايت endian الصغير). | ||
|- | |- | ||
|G | |G | ||
|نوع البيانات float (الإعتماد على حجم الجهاز وترتيب البايت endian الكبير). | |نوع البيانات <code>[[PHP/float|float]]</code> (الإعتماد على حجم الجهاز وترتيب البايت endian الكبير). | ||
|- | |- | ||
|d | |d | ||
|نوع البيانات double (الإعتماد على حجم وتمثيل الجهاز). | |نوع البيانات <code>[[PHP/double|double]]</code> (الإعتماد على حجم وتمثيل الجهاز). | ||
|- | |- | ||
|e | |e | ||
|نوع البيانات double (الإعتماد على حجم الجهاز وترتيب البايت endian الصغير). | |نوع البيانات <code>[[PHP/double|double]]</code> (الإعتماد على حجم الجهاز وترتيب البايت endian الصغير). | ||
|- | |- | ||
|E | |E | ||
|نوع البيانات double (الإعتماد على حجم الجهاز وترتيب البايت endian الكبير). | |نوع البيانات <code>[[PHP/double|double]]</code> (الإعتماد على حجم الجهاز وترتيب البايت endian الكبير). | ||
|- | |- | ||
|x | |x | ||
|نوع البيانات NULL byte. | |نوع البيانات <code>[[PHP/NULL byte|NULL byte]]</code>. | ||
|- | |- | ||
|X | |X | ||
سطر 109: | سطر 110: | ||
|- | |- | ||
|Z | |Z | ||
|سلسلة نصية محشوة بالمحرف NULL (جديد في النسخة PHP 5.5). | |سلسلة نصية محشوة بالمحرف <code>[[PHP/null|NULL]]</code> (جديد في النسخة PHP 5.5). | ||
|- | |- | ||
|@ | |@ | ||
|ملء بالمحرف NULL إلى الموقع المطلق. | |ملء بالمحرف <code>[[PHP/null|NULL]]</code> إلى الموقع المطلق. | ||
|} | |} | ||
سطر 118: | سطر 119: | ||
== القيم المعادة == | == القيم المعادة == | ||
تعيد الدالةُ pack() سلسلة ثنائية تحتوي على بيانات. | تعيد الدالةُ <code>pack()</code> سلسلة ثنائية تحتوي على بيانات. | ||
== سجل التغييرات == | == سجل التغييرات == | ||
{| class="wikitable" | {| class="wikitable" | ||
!الإصدار | |||
!الوصف | |||
|- | |- | ||
|7.2.0 | |7.2.0 | ||
|يدعمُ نوعا البيانات float و double كلًا من endian الكبير و endian الصغير. | |يدعمُ نوعا البيانات <code>[[PHP/float|float]]</code> و <code>[[PHP/double|double]]</code> كلًا من endian الكبير و endian الصغير. | ||
|- | |- | ||
|7.0.15 و7.1.1 | |7.0.15 و7.1.1 | ||
|أُضِيْفَت الرموز "e" و"E" و"g" و"G" للسماح بدعم ترتيب البايت لنوعي البيانات float و double. | |أُضِيْفَت الرموز "e" و"E" و"g" و"G" للسماح بدعم ترتيب البايت لنوعي البيانات <code>float</code> و <code>double</code>. | ||
|- | |- | ||
|5.6.3 | |5.6.3 | ||
سطر 139: | سطر 140: | ||
== أمثلة == | == أمثلة == | ||
المثال 1: مثال على الدالة pack()<syntaxhighlight lang="php"> | المثال 1: مثال على الدالة <code>pack()</code><syntaxhighlight lang="php"> | ||
<?php | <?php | ||
$binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66); | $binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66); | ||
?> | ?> | ||
</syntaxhighlight>تكون السلسلة الثنائية الناتجة 6 بايت وتحتوي على تسلسل بايت 0x12 ، 0x34 ، 0x78 ، 0x56 ، 0x41 ، 0x42. | </syntaxhighlight>تكون السلسلة الثنائية الناتجة 6 بايت وتحتوي على تسلسل بايت 0x12 ، 0x34 ، 0x78 ، 0x56 ، 0x41 ، 0x42. | ||
== ملاحظات == | == ملاحظات == | ||
تحذير: لاحظ أن PHP تخزن نوع البيانات integer داخليًا كقيم مؤشرة ذاتُ حجمٍ يعتمد على الجهاز (نوع البيانات long في اللغة C). سَتُخَزَّنُ القيم الحرفية للأعداد الصحيحة والعمليات التي تنتج أعدادًا خارج حدود نوع البيانات integer على هيئة نوع البيانات float. عند تحزيم البيانات من النوع float كبيانات من النوع | تحذير: لاحظ أن PHP تخزن نوع البيانات <code>[[PHP/integer|integer]]</code> داخليًا كقيم مؤشرة ذاتُ حجمٍ يعتمد على الجهاز (نوع البيانات long في اللغة C). سَتُخَزَّنُ القيم الحرفية للأعداد الصحيحة والعمليات التي تنتج أعدادًا خارج حدود نوع البيانات <code>[[PHP/integer|integer]]</code> على هيئة نوع البيانات <code>[[PHP/float|float]]</code>. عند تحزيم البيانات من النوع <code>[[PHP/float|float]]</code> كبيانات من النوع <code>[[PHP/integer|integer]]</code>، فستُحوَّل أولًا إلى نوع البيانات <code>[[PHP/integer|integer]]</code>. هذا قد يؤدي أ وقد لا يؤدي إلى النتيجة المطلوبة. | ||
أكثر الحالة يمكن أن تلائم هذا التحذير هي عند تحزيم الأرقام غير المؤشرة التي يمكن تمثيلها مع نوع البيانات integer إذا لم يكن مؤشرًا. | أكثر الحالة يمكن أن تلائم هذا التحذير هي عند تحزيم الأرقام غير المؤشرة التي يمكن تمثيلها مع نوع البيانات <code>[[PHP/integer|integer]]</code> إذا لم يكن مؤشرًا. | ||
في الأنظمة التي يحتوي فيها النوع integer على حجم 32 بت، تُنتج عملية التحويلعادةً نفس نمط البايت كما لو كان نوع البيانات integer غير مؤشَّر. في الأنظمة التي يكون فيها نوع البيانات integer يحتوي على حجم 64 بت، فإن نوع البيانات float على الأرجح لا يحتوي على الجزء العشري بما يكفي للاحتفاظ بالقيمة دون فقد الدقة. إذا امتلكت هذه الأنظمة أيضًا نوع البيانات int 64 بت الأصلي في لغة C (ينطبق هذا الكلام على كل الأنظمة ما عدا الأنظمة الشبيهة بيونكس)، فإن الطريقة الوحيدة لاستخدام تنسيق التحزيم "I" في النطاق الأعلى (upper range) هي إنشاء قيم سالبة صحيحة مع تمثيل البايت نفسه مثل القيمة المطلوبة غير المؤشرة. | في الأنظمة التي يحتوي فيها النوع <code>[[PHP/integer|integer]]</code> على حجم 32 بت، تُنتج عملية التحويلعادةً نفس نمط البايت كما لو كان نوع البيانات <code>[[PHP/integer|integer]]</code> غير مؤشَّر. في الأنظمة التي يكون فيها نوع البيانات <code>[[PHP/integer|integer]]</code> يحتوي على حجم 64 بت، فإن نوع البيانات <code>[[PHP/float|float]]</code> على الأرجح لا يحتوي على الجزء العشري بما يكفي للاحتفاظ بالقيمة دون فقد الدقة. إذا امتلكت هذه الأنظمة أيضًا نوع البيانات <code>int</code> 64 بت الأصلي في لغة C (ينطبق هذا الكلام على كل الأنظمة ما عدا الأنظمة الشبيهة بيونكس)، فإن الطريقة الوحيدة لاستخدام تنسيق التحزيم "I" في النطاق الأعلى (upper range) هي إنشاء قيم سالبة صحيحة مع تمثيل البايت نفسه مثل القيمة المطلوبة غير المؤشرة. | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* الدالة unpack(): فك تحزيم البيانات من السلسلة النصية الثنائية. | * الدالة <code>[[PHP/unpack|unpack()]]</code>: فك تحزيم البيانات من السلسلة النصية الثنائية. | ||
== مصادر == | == مصادر == |
المراجعة الحالية بتاريخ 13:49، 29 مايو 2018
(PHP 4, PHP 5, PHP 7)
تحزمُ الدالةُ pack()
البيانات في سلسلة نصية ثنائية.
الوصف
string pack ( string $format [, mixed $args [, mixed $... ]] )
تحزمُ الدالةُ pack()
البيانات في سلسلة نصية ثنائية وِفْقَ المعامل format
.
أُخِذَتْ فكرةُ الدالةِ pack()
من لغة البرمجة Perl وجميع رموز التنسيق تعمل كما هو الحال في Perl. ومع ذلك، هناك بعض رموز التنسيق مفقودة مثل رمز التنسيق "u" الخاص بلغة Perl.
لاحظ أن التمييز بين القيم المؤشرة وغير المؤشرة يؤثر فقط على الدالةِ unpack()
، إذ تعطي الدالةُ pack()
نفس النتيجة للشيفرات المؤشرة وغير المؤشرة.
المعاملات
format
تتكون سلسلة المعامل format
من شيفرات التنسيق متبوعةً بوسيط اختياري للتكرار. يمكن أن تكون الوسيط repeater إما قيمة صحيحة أو * للتكرار إلى نهاية بيانات الإدخال.
بالنسبة إلى a، و A، و h، و H يحدد عَدَّادُ التكرار عدد الأحرف التي أُخِذَت لوسيط وحيد يُمثِّل البيانات، أما بالنسبة للرمز @ فهو الموقع المطلق لوضع البيانات التالية، وبالنسبة لأي شيء آخر، فإن عَدَّادَ التكرار يحدد عدد وسائط البيانات التي استُهْلِكَت وحُزِمَت في السلسلة النصية الثنائية الناتجة.
التنسيقات المتاحة حاليًا مذكورةٌ في جدول حروف التنسيق الآتي:
الرمز | الوصف |
---|---|
a | سلسلة نصية محشوة بالمحرف NULL. |
A | سلسلة نصية محشوة بمسافة. |
h | سلسلة نصية في نظام العد الست عشري، النايبل الصغرى أولًا (low nibble). |
H | سلسلة نصية في نظام العد الست عشري، النايبل الكبرى أولًا (high nibble). |
c | حرفٌ مؤشَّر. |
C | حرفٌ غير مؤشَّر. |
s | نوع البيانات short المؤشَّر (دائما 16 بت، ترتيب بايت للجهاز).
|
S | نوع البيانات short غير المؤشَّر (دائما 16 بت، ترتيب بايت للجهاز).
|
n | نوع البيانات short غير المؤشَّر (دائمًا 16 بت، ترتيب البايت endian الكبير).
|
v | نوع البيانات short غير المؤشَّر (دائمًا 16 بت، ترتيب البايت endian الصغير).
|
i | نوع البيانات integer المؤشَّر (الإعتماد على حجم الجهاز وترتيب البايت).
|
I | نوع البيانات integer غير المؤشَّر (الإعتماد على حجم الجهاز وترتيب البايت).
|
l | نوع البيانات long المؤشَّر (دائما 32 بت، ترتيب بايت للجهاز).
|
L | نوع البيانات long غير المؤشَّر (دائما 32 بت، ترتيب بايت للجهاز).
|
N | نوع البيانات long غير المؤشَّر (دائمًا 32 بت، ترتيب البايت endian الكبير).
|
V | نوع البيانات long غير المؤشَّر (دائمًا 32 بت، ترتيب البايت endian الصغير).
|
q | نوع البيانات long long المؤشَّر (دائما 64 بت، ترتيب بايت للجهاز).
|
Q | نوع البيانات long long غير المؤشَّر (دائما 64 بت، ترتيب بايت للجهاز).
|
J | نوع البيانات long long غير المؤشَّر (دائمًا 64 بت، ترتيب البايت endian الكبير).
|
P | نوع البيانات long long غير المؤشَّر (دائمًا 64 بت، ترتيب البايت endian الصغير).
|
f | نوع البيانات float (الإعتماد على حجم وتمثيل الجهاز).
|
g | نوع البيانات float (الإعتماد على حجم الجهاز وترتيب البايت endian الصغير).
|
G | نوع البيانات float (الإعتماد على حجم الجهاز وترتيب البايت endian الكبير).
|
d | نوع البيانات double (الإعتماد على حجم وتمثيل الجهاز).
|
e | نوع البيانات double (الإعتماد على حجم الجهاز وترتيب البايت endian الصغير).
|
E | نوع البيانات double (الإعتماد على حجم الجهاز وترتيب البايت endian الكبير).
|
x | نوع البيانات NULL byte .
|
X | نَسْخ بايت واحد إحتياطيًا. |
Z | سلسلة نصية محشوة بالمحرف NULL (جديد في النسخة PHP 5.5).
|
@ | ملء بالمحرف NULL إلى الموقع المطلق.
|
args
القيم المعادة
تعيد الدالةُ pack()
سلسلة ثنائية تحتوي على بيانات.
سجل التغييرات
الإصدار | الوصف |
---|---|
7.2.0 | يدعمُ نوعا البيانات float و double كلًا من endian الكبير و endian الصغير.
|
7.0.15 و7.1.1 | أُضِيْفَت الرموز "e" و"E" و"g" و"G" للسماح بدعم ترتيب البايت لنوعي البيانات float و double .
|
5.6.3 | أُضِيْفَت الرموز "q" و "Q" و "J" و "P" للسماح بالعمل باستخدام أرقام 64 بت. |
5.5.0 | أُضِيْفَ الرمز "Z" مع تكافؤٍ وظيفي إلى "a" لموافقة لغة Perl. |
أمثلة
المثال 1: مثال على الدالة pack()
<?php
$binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>
تكون السلسلة الثنائية الناتجة 6 بايت وتحتوي على تسلسل بايت 0x12 ، 0x34 ، 0x78 ، 0x56 ، 0x41 ، 0x42.
ملاحظات
تحذير: لاحظ أن PHP تخزن نوع البيانات integer
داخليًا كقيم مؤشرة ذاتُ حجمٍ يعتمد على الجهاز (نوع البيانات long في اللغة C). سَتُخَزَّنُ القيم الحرفية للأعداد الصحيحة والعمليات التي تنتج أعدادًا خارج حدود نوع البيانات integer
على هيئة نوع البيانات float
. عند تحزيم البيانات من النوع float
كبيانات من النوع integer
، فستُحوَّل أولًا إلى نوع البيانات integer
. هذا قد يؤدي أ وقد لا يؤدي إلى النتيجة المطلوبة.
أكثر الحالة يمكن أن تلائم هذا التحذير هي عند تحزيم الأرقام غير المؤشرة التي يمكن تمثيلها مع نوع البيانات integer
إذا لم يكن مؤشرًا.
في الأنظمة التي يحتوي فيها النوع integer
على حجم 32 بت، تُنتج عملية التحويلعادةً نفس نمط البايت كما لو كان نوع البيانات integer
غير مؤشَّر. في الأنظمة التي يكون فيها نوع البيانات integer
يحتوي على حجم 64 بت، فإن نوع البيانات float
على الأرجح لا يحتوي على الجزء العشري بما يكفي للاحتفاظ بالقيمة دون فقد الدقة. إذا امتلكت هذه الأنظمة أيضًا نوع البيانات int
64 بت الأصلي في لغة C (ينطبق هذا الكلام على كل الأنظمة ما عدا الأنظمة الشبيهة بيونكس)، فإن الطريقة الوحيدة لاستخدام تنسيق التحزيم "I" في النطاق الأعلى (upper range) هي إنشاء قيم سالبة صحيحة مع تمثيل البايت نفسه مثل القيمة المطلوبة غير المؤشرة.
انظر أيضًا
- الدالة
unpack()
: فك تحزيم البيانات من السلسلة النصية الثنائية.