الفرق بين المراجعتين لصفحة: «Ruby/Array/pack»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>Array.pack</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method [[تصنيف: Ruby Array]...' |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(7 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Array]] | [[تصنيف: Ruby Array]] | ||
يُحزِّمُ ( | يُحزِّمُ (packs) التابع <code>pack</code> محتويات المصفوفة التي استُدعيت معه على شكل تسلسل ثنائي (binary sequence) وفقًا للمُوجِّهات (directives) الواردة في المعامل <code>aTemplateString</code>؛ يمكن أن يتبع المُوجِّهات ",<code>"</code>" و "<code>A"</code>" و "<code>"a"</code>" عددًا يحدّد عرض الحقل الناتج. قد تأخذ المُوجّهات المتبقية عددًا أيضًا مما يشير إلى عدد عناصر المصفوفة المطلوب تحويلها. | ||
إذا كان العدد يمثِّل محرف النجمة ("*")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات "<code> | |||
في حال تمرير المعامل <code> | إذا كان العدد يمثِّل محرف النجمة ("<code>*</code>")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات "<code>sSiIlL</code>" بشرطة سفلية ("<code>_</code>") أو إشارة تعجب ("<code>!</code>") لاستخدام الحجم الأصلي للمنصة الأساسية (underlying platform) للنوع المحدد؛ خلا ذلك، ستستخدم حجمًا مستقلًا عن المنصة (platform-independent size). يتم تجاهل المسافات البيضاء في سلسلة القالب. | ||
في حال تمرير المعامل <code>aBufferString</code> وكانت سعته (capacity) كافية، فسيستخدمها التابع <code>pack</code> كمخزن مؤقت (buffer) ثمَّ يعيدها. عندما تُحدَّد الإزاحة (offset) ببداية <code>aTemplateString</code>، فستُملَأ النتيجة بعد الإزاحة. في حالة وجود محتويات سابقة في <code>aBufferString</code> وكان طولها أكبر من الإزاحة offset، فسيُكتَب الناتج فوق ما بقي من <code>offsetOfBuffer</code>. أمّا إذا كان طولها أصغر، فسيُملَأ الفراغ المتبقي بالمحرف "<code>\0</code>". | |||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby"> pack( aTemplateString ) → aBinaryString | <syntaxhighlight lang="ruby"> pack( aTemplateString ) → aBinaryString | ||
سطر 11: | سطر 13: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==المعاملات== | ==المعاملات== | ||
<code>aTemplateString</code> | |||
=== <code>aTemplateString</code> === | |||
يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع <code>pack</code> وهي: | يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع <code>pack</code> وهي: | ||
-------(لا | {| class="wikitable" | ||
[<code>a</code>] | !موجهات من النوع Integer | ||
<code> | !الصنف المعاد | ||
!شرح | |||
|- | |||
|<code>C</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 8 بايتات عديمة الإشارة (8-bit unsigned). | |||
|- | |||
|<code>S</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 16 بت عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uint16_t)). | |||
|- | |||
|<code>L</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 32 بت عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uint32_t)). | |||
|- | |||
|<code>Q</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 64 بت عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uint64_t)). | |||
|- | |||
|<code>J</code> | |||
|<code>Integer</code> | |||
|عرض المؤشر عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uintptr_t)). | |||
متاح منذ Ruby 2.3. | |||
|- | |||
| colspan="3" | | |||
|- | |||
|c | |||
|<code>Integer</code> | |||
|عدد بحجم 8 بايتات ذات إشارة (8-bit signed). | |||
|- | |||
|<code>s</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 16 بت ذو إشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات int16_t)). | |||
|- | |||
|<code>l</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 32 بت ذو إشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات int32_t)). | |||
|- | |||
|<code>q</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 16 بت ذو إشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات int64_t)). | |||
|- | |||
|<code>j</code> | |||
|<code>Integer</code> | |||
|عرض المؤشر ذي الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات intptr_t)). | |||
متاح منذ Ruby 2.3. | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
|<code>S_ S!</code> | |||
|<code>Integer</code> | |||
|عدد صغير عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned short, native endian). | |||
|- | |||
|<code>I I_ I!</code> | |||
|<code>Integer</code> | |||
|عدد صحيح عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned int, native endian). | |||
|- | |||
|<code>L_ L!</code> | |||
|<code>Integer</code> | |||
|عدد كبير عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned long, native endian). | |||
|- | |||
|<code>Q_ Q!</code> | |||
|<code>Integer</code> | |||
|عدد كبير جدًا عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned long long, native endian). | |||
يطلق الخطأ <code>ArgumentError</code> في حال لم يكن في المنصة النوع <code>long long</code>. | |||
متاح منذ Ruby 2.1. | |||
|- | |||
|<code>J!</code> | |||
|<code>Integer</code> | |||
|عرض المؤشر عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (مثل الموجه <code>J</code>). | |||
متاح منذ Ruby 2.3. | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
|<code>s_ s!</code> | |||
|<code>Integer</code> | |||
|عدد صغير ذو إشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed short, native endian). | |||
|- | |||
|<code>i i_ i!</code> | |||
|<code>Integer</code> | |||
|عدد صحيح ذو إشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed int, native endian). | |||
|- | |||
|<code>l_ l!</code> | |||
|<code>Integer</code> | |||
|عدد كبير بإشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed long, native endian). | |||
|- | |||
|<code>q_ q!</code> | |||
|<code>Integer</code> | |||
|عدد كبير جدًا ذو إشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed long long, native endian). | |||
يطلق الخطأ <code>ArgumentError</code> في حال لم يكن في المنصة النوع <code>long long</code>. | |||
متاح منذ Ruby 2.1 | |||
|- | |||
|<code>j!</code> | |||
|<code>Integer</code> | |||
|عرض المؤشر ذي الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (مثل <code>j</code>). | |||
متاح منذ Ruby 2.3. | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
|<code>S> s> S!> s!></code><code>L> l> L!> l!></code><code>I!> i!> </code> | |||
<code>Q> q> Q!> q!></code> | |||
<code>J> j> J!> j!></code> | |||
|<code>Integer</code> | |||
|مثل الموجهات التي لا تحتوي "<"، باستثناء كون البايتات الأقل أهمية مخزنة أولًا (big endian). | |||
إن <code>I!> i!></code> متاحة منذ Ruby 1.9.3. | |||
"<code>S></code>" مثله مثل "<code>n</code>" | |||
"<code>L></code>" مثله مثل "<code>N</code>" | |||
|- | |||
|<code>S< s< S!< s!<</code><code>L< l< L!< l!<</code><code>I!< i!<</code> | |||
<code>Q< q< Q!< q!<</code> | |||
<code>J< j< J!< j!<</code> | |||
|<code>Integer</code> | |||
|مثل الموجهات التي لا تحتوي ">"، باستثناء كون البايتات الأكثر أهمية مخزنة أولًا (little endian). | |||
إن <code>I!< i!<</code> متاحة منذ Ruby 1.9.3. | |||
"<code>S<</code>" مثله مثل "<code>v</code>" | |||
"<code>L<</code>" مثله مثل "<code>V</code>" | |||
|- | |||
| | |||
| | |||
| | |||
|- | |||
|<code>n</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 16 بت عديم الإشارة، ترتيب بايت شبكي (network byte order، أي البايت الأكثر أهمية مخزَّن أولًا [big-endian]). | |||
|- | |||
|<code>N</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 32 بت عديم الإشارة، ترتيب بايت شبكي (network byte order، أي البايت الأكثر أهمية مخزَّن أولًا [big-endian]). | |||
|- | |||
|<code>v</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 16 بت عديم الإشارة، ترتيب البايت بحسب VAX (أي VAX byte order، البايت الأقل أهمية مخزَّن أولًا [little-endian]). | |||
|- | |||
|<code>V</code> | |||
|<code>Integer</code> | |||
|عدد بحجم 32 بت عديم الإشارة، ترتيب البايت بحسب VAX (أي VAX byte order، البايت الأقل أهمية مخزَّن أولًا [little-endian]). | |||
|- | |||
|<code>U</code> | |||
|<code>Integer</code> | |||
|محرف مرمز بالترميز UTF-8. | |||
|- | |||
|<code>w</code> | |||
|<code>Integer</code> | |||
|عدد مضغوط وفقًا للصيغة BER. | |||
|- | |||
| colspan="3" | | |||
|- | |||
!موجهات من النوع Float | |||
!عناصر المصفوفة | |||
!شرح | |||
|- | |||
|<code>D d</code> | |||
|<code>Float</code> | |||
|عدد عشري مضاعف، مع اعتماد الترتيب الطبيعي للبايتات (double-precision, native format). | |||
|- | |||
|<code>F f</code> | |||
|<code>Float</code> | |||
|عدد عشري، مع اعتماد الترتيب الطبيعي للبايتات (single-precision, native format). | |||
|- | |||
|<code>E</code> | |||
|<code>Float</code> | |||
|عدد عشري مضاعف، مع ترتيب البايتات الأكثر أهمية أولًا (double-precision, little-endian byte order). | |||
|- | |||
|<code>e</code> | |||
|<code>Float</code> | |||
|عدد عشري، مع ترتيب البايتات الأكثر أهمية أولًا (single-precision, little-endian byte order). | |||
|- | |||
|<code>G</code> | |||
|<code>Float</code> | |||
|عدد عشري مضاعف، مع ترتيب البايتات الأقل أهمية أولًا (double-precision, network [big-endian] byte order). | |||
|- | |||
|<code>g</code> | |||
|<code>Float</code> | |||
|عدد عشري، مع ترتيب البايتات الأقل أهمية أولًا (single-precision, network [big-endian] byte order). | |||
|- | |||
| colspan="3" | | |||
|- | |||
!موجهات من النوع String | |||
!عناصر المصفوفة | |||
!شرح | |||
|- | |||
|<code>A</code> | |||
|<code>String</code> | |||
|سلسلة نصية ثنائية عشوائية ( محشوة بمسافة بيضاء، و <code>count</code> هو العرض [width]). | |||
|- | |||
|<code>a</code> | |||
|<code>String</code> | |||
|سلسلة نصية ثنائية عشوائية ( محشوة بالقيمة <code>null</code>، و <code>count</code> هو العرض [width]). | |||
|- | |||
|<code>Z</code> | |||
|<code>String</code> | |||
|مثل "a" باستثناء أنّ <code>null</code> مٌضافة مع <code>*</code>. | |||
|- | |||
|<code>B</code> | |||
|<code>String</code> | |||
|سلسلة نصية من البتات (bit string) البتات الأكثر أهمية أولًا. | |||
|- | |||
|<code>b</code> | |||
|<code>String</code> | |||
|سلسلة نصية من البتات (bit string) البتات الأقل أهمية أولًا. | |||
|- | |||
|<code>H</code> | |||
|<code>String</code> | |||
|سلسلة نصية ست عشرية (البايت العلوي [high nibble] أولًا). | |||
|- | |||
|<code>h</code> | |||
|<code>String</code> | |||
|سلسلة نصية ست عشرية (البايت السفلي [low nibble] أولًا). | |||
|- | |||
|<code>u</code> | |||
|<code>String</code> | |||
|سلسلة نصية مُرمّزة بالترميز UU. | |||
|- | |||
|<code>M</code> | |||
|<code>String</code> | |||
|ترميز MIME مقتبس قابل للطباعة (quoted-printable, MIME encoding). اطلع على RFC2045. | |||
|- | |||
|<code>m</code> | |||
|<code>String</code> | |||
|سلسلة نصية مُرمّز بالترميز base64 (انظر <nowiki>RFC 2045</nowiki>، و <code>count</code> هو العرض [width]). | |||
(في حال كان count يساوي 0، فلن يُضاف أي سطر، انظر <nowiki>RFC 4648</nowiki>.) | |||
|- | |||
|<code>P</code> | |||
|<code>String</code> | |||
|مؤشر لبنية (pointer to a structure)، سلسلة نصية ذات طول ثابت (fixed-length). | |||
|- | |||
|<code>p</code> | |||
|<code>String</code> | |||
|مؤشر لسلسة نصية مَنهِيّة بالقيمة null (null-terminated string). | |||
|- | |||
| colspan="3" | | |||
|- | |||
!موجهات من النوع Misc | |||
!عناصر المصفوفة | |||
!شرح | |||
|- | |||
|<code>@</code> | |||
|<code>String</code> | |||
|التحرك للموضع المطلق (absolute position). | |||
|- | |||
|<code>X</code> | |||
|<code>String</code> | |||
|العودة بمقدار بايت (byte) واحد. | |||
|- | |||
|<code>x</code> | |||
|<code>String</code> | |||
|بايت معدوم (null byte). | |||
|} | |||
=== <code>buffer: aBufferString</code> === | |||
مخزن مؤقت يستعمل -إن كانت سعته كافية- لتخزين ناتج تنفيذ التابع <code>pack</code> فيه. | مخزن مؤقت يستعمل -إن كانت سعته كافية- لتخزين ناتج تنفيذ التابع <code>pack</code> فيه. | ||
انتبه إلى أنَّ الخيار | انتبه إلى أنَّ الخيار <code>"buffer:<nowiki>''</nowiki></code> '' لا يضمن عدم تخصيص الذاكرة في التابع <code>pack</code>. إذا كانت سعة <code>aBufferString</code> غير كافية، فسيَحجز التابع <code>pack</code> حجمًا مناسبًا من الذاكرة.'' | ||
==القيم المعادة== | ==القيم المعادة== | ||
يعاد كائنٌ من النوع <code>aBinaryString</code>، أو تخزَّن هذه البيانات المعادة في المعامل <code>aBufferString</code> (إن أعطي) ثم يعاد. | يعاد كائنٌ من النوع <code>aBinaryString</code>، أو تخزَّن هذه البيانات المعادة في المعامل <code>aBufferString</code> (إن أعطي) ثم يعاد. | ||
سطر 32: | سطر 300: | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* التابع [[Ruby/Array/hash | <code>hash</code>]]: يعيد قيمة <code>Hash</code> للمصفوفة التي استُدعيت معه. | * التابع [[Ruby/Array/hash | <code>hash</code>]]: يعيد قيمة <code>Hash</code> للمصفوفة التي استُدعيت معه. | ||
* التابع [[Ruby/String/unpack|unpack]]: يفك ترميز السلسلة النصية التي استدعي معها (والتي قد تحوي بيانات ثنائية) وفقًا إلى سلسلة التنسيق المعطاة، ويعيد مصفوفة من كل قيمة مستخرجة. | |||
==مصادر== | ==مصادر== | ||
* قسم التابع pack في الصنف Array في توثيق روبي الرسمي. | * [https://ruby-doc.org/core-2.5.1/Array.html#method-i-pack قسم التابع pack في الصنف Array في توثيق روبي الرسمي.] | ||
المراجعة الحالية بتاريخ 21:53، 27 مارس 2019
يُحزِّمُ (packs) التابع pack
محتويات المصفوفة التي استُدعيت معه على شكل تسلسل ثنائي (binary sequence) وفقًا للمُوجِّهات (directives) الواردة في المعامل aTemplateString
؛ يمكن أن يتبع المُوجِّهات ","
" و "A"
" و ""a"
" عددًا يحدّد عرض الحقل الناتج. قد تأخذ المُوجّهات المتبقية عددًا أيضًا مما يشير إلى عدد عناصر المصفوفة المطلوب تحويلها.
إذا كان العدد يمثِّل محرف النجمة ("*
")، فستُحوَّل جميع عناصر المصفوفة المتبقية. يمكن أن تُتبَع أيٌّ من المُوجّهات "sSiIlL
" بشرطة سفلية ("_
") أو إشارة تعجب ("!
") لاستخدام الحجم الأصلي للمنصة الأساسية (underlying platform) للنوع المحدد؛ خلا ذلك، ستستخدم حجمًا مستقلًا عن المنصة (platform-independent size). يتم تجاهل المسافات البيضاء في سلسلة القالب.
في حال تمرير المعامل aBufferString
وكانت سعته (capacity) كافية، فسيستخدمها التابع pack
كمخزن مؤقت (buffer) ثمَّ يعيدها. عندما تُحدَّد الإزاحة (offset) ببداية aTemplateString
، فستُملَأ النتيجة بعد الإزاحة. في حالة وجود محتويات سابقة في aBufferString
وكان طولها أكبر من الإزاحة offset، فسيُكتَب الناتج فوق ما بقي من offsetOfBuffer
. أمّا إذا كان طولها أصغر، فسيُملَأ الفراغ المتبقي بالمحرف "\0
".
البنية العامة
pack( aTemplateString ) → aBinaryString
pack( aTemplateString, buffer: aBufferString ) → aBufferString
المعاملات
aTemplateString
يأخذ هذا المعامل إحدى قيم الموجهات المستعملة مع التابع pack
وهي:
موجهات من النوع Integer | الصنف المعاد | شرح |
---|---|---|
C
|
Integer
|
عدد بحجم 8 بايتات عديمة الإشارة (8-bit unsigned). |
S
|
Integer
|
عدد بحجم 16 بت عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uint16_t)). |
L
|
Integer
|
عدد بحجم 32 بت عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uint32_t)). |
Q
|
Integer
|
عدد بحجم 64 بت عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uint64_t)). |
J
|
Integer
|
عرض المؤشر عديم الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات uintptr_t)).
متاح منذ Ruby 2.3. |
c | Integer
|
عدد بحجم 8 بايتات ذات إشارة (8-bit signed). |
s
|
Integer
|
عدد بحجم 16 بت ذو إشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات int16_t)). |
l
|
Integer
|
عدد بحجم 32 بت ذو إشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات int32_t)). |
q
|
Integer
|
عدد بحجم 16 بت ذو إشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات int64_t)). |
j
|
Integer
|
عرض المؤشر ذي الإشارة، مع اعتماد الترتيب الطبيعي (native endian) للبايتات intptr_t)).
متاح منذ Ruby 2.3. |
S_ S!
|
Integer
|
عدد صغير عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned short, native endian). |
I I_ I!
|
Integer
|
عدد صحيح عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned int, native endian). |
L_ L!
|
Integer
|
عدد كبير عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned long, native endian). |
Q_ Q!
|
Integer
|
عدد كبير جدًا عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (unsigned long long, native endian).
يطلق الخطأ متاح منذ Ruby 2.1. |
J!
|
Integer
|
عرض المؤشر عديم الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (مثل الموجه J ).
متاح منذ Ruby 2.3. |
s_ s!
|
Integer
|
عدد صغير ذو إشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed short, native endian). |
i i_ i!
|
Integer
|
عدد صحيح ذو إشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed int, native endian). |
l_ l!
|
Integer
|
عدد كبير بإشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed long, native endian). |
q_ q!
|
Integer
|
عدد كبير جدًا ذو إشارة، مع اعتماد الترتيب الطبيعي للبايتات (signed long long, native endian).
يطلق الخطأ متاح منذ Ruby 2.1 |
j!
|
Integer
|
عرض المؤشر ذي الإشارة، مع اعتماد الترتيب الطبيعي للبايتات (مثل j ).
متاح منذ Ruby 2.3. |
S> s> S!> s!> L> l> L!> l!> I!> i!>
|
Integer
|
مثل الموجهات التي لا تحتوي "<"، باستثناء كون البايتات الأقل أهمية مخزنة أولًا (big endian).
إن " " |
S< s< S!< s!< L< l< L!< l!< I!< i!<
|
Integer
|
مثل الموجهات التي لا تحتوي ">"، باستثناء كون البايتات الأكثر أهمية مخزنة أولًا (little endian).
إن " " |
n
|
Integer
|
عدد بحجم 16 بت عديم الإشارة، ترتيب بايت شبكي (network byte order، أي البايت الأكثر أهمية مخزَّن أولًا [big-endian]). |
N
|
Integer
|
عدد بحجم 32 بت عديم الإشارة، ترتيب بايت شبكي (network byte order، أي البايت الأكثر أهمية مخزَّن أولًا [big-endian]). |
v
|
Integer
|
عدد بحجم 16 بت عديم الإشارة، ترتيب البايت بحسب VAX (أي VAX byte order، البايت الأقل أهمية مخزَّن أولًا [little-endian]). |
V
|
Integer
|
عدد بحجم 32 بت عديم الإشارة، ترتيب البايت بحسب VAX (أي VAX byte order، البايت الأقل أهمية مخزَّن أولًا [little-endian]). |
U
|
Integer
|
محرف مرمز بالترميز UTF-8. |
w
|
Integer
|
عدد مضغوط وفقًا للصيغة BER. |
موجهات من النوع Float | عناصر المصفوفة | شرح |
D d
|
Float
|
عدد عشري مضاعف، مع اعتماد الترتيب الطبيعي للبايتات (double-precision, native format). |
F f
|
Float
|
عدد عشري، مع اعتماد الترتيب الطبيعي للبايتات (single-precision, native format). |
E
|
Float
|
عدد عشري مضاعف، مع ترتيب البايتات الأكثر أهمية أولًا (double-precision, little-endian byte order). |
e
|
Float
|
عدد عشري، مع ترتيب البايتات الأكثر أهمية أولًا (single-precision, little-endian byte order). |
G
|
Float
|
عدد عشري مضاعف، مع ترتيب البايتات الأقل أهمية أولًا (double-precision, network [big-endian] byte order). |
g
|
Float
|
عدد عشري، مع ترتيب البايتات الأقل أهمية أولًا (single-precision, network [big-endian] byte order). |
موجهات من النوع String | عناصر المصفوفة | شرح |
A
|
String
|
سلسلة نصية ثنائية عشوائية ( محشوة بمسافة بيضاء، و count هو العرض [width]).
|
a
|
String
|
سلسلة نصية ثنائية عشوائية ( محشوة بالقيمة null ، و count هو العرض [width]).
|
Z
|
String
|
مثل "a" باستثناء أنّ null مٌضافة مع * .
|
B
|
String
|
سلسلة نصية من البتات (bit string) البتات الأكثر أهمية أولًا. |
b
|
String
|
سلسلة نصية من البتات (bit string) البتات الأقل أهمية أولًا. |
H
|
String
|
سلسلة نصية ست عشرية (البايت العلوي [high nibble] أولًا). |
h
|
String
|
سلسلة نصية ست عشرية (البايت السفلي [low nibble] أولًا). |
u
|
String
|
سلسلة نصية مُرمّزة بالترميز UU. |
M
|
String
|
ترميز MIME مقتبس قابل للطباعة (quoted-printable, MIME encoding). اطلع على RFC2045. |
m
|
String
|
سلسلة نصية مُرمّز بالترميز base64 (انظر RFC 2045، و count هو العرض [width]).
(في حال كان count يساوي 0، فلن يُضاف أي سطر، انظر RFC 4648.) |
P
|
String
|
مؤشر لبنية (pointer to a structure)، سلسلة نصية ذات طول ثابت (fixed-length). |
p
|
String
|
مؤشر لسلسة نصية مَنهِيّة بالقيمة null (null-terminated string). |
موجهات من النوع Misc | عناصر المصفوفة | شرح |
@
|
String
|
التحرك للموضع المطلق (absolute position). |
X
|
String
|
العودة بمقدار بايت (byte) واحد. |
x
|
String
|
بايت معدوم (null byte). |
buffer: aBufferString
مخزن مؤقت يستعمل -إن كانت سعته كافية- لتخزين ناتج تنفيذ التابع pack
فيه.
انتبه إلى أنَّ الخيار "buffer:''
لا يضمن عدم تخصيص الذاكرة في التابع pack
. إذا كانت سعة aBufferString
غير كافية، فسيَحجز التابع pack
حجمًا مناسبًا من الذاكرة.
القيم المعادة
يعاد كائنٌ من النوع aBinaryString
، أو تخزَّن هذه البيانات المعادة في المعامل aBufferString
(إن أعطي) ثم يعاد.
أمثلة
أمثلة على استخدام التابع pack
:
a = [ "a", "b", "c" ]
n = [ 65, 66, 67 ]
a.pack("A3A3A3") #=> "a b c "
a.pack("a3a3a3") #=> "a\000\000b\000\000c\000\000"
n.pack("ccc") #=> "ABC"
انظر أيضًا
- التابع
hash
: يعيد قيمةHash
للمصفوفة التي استُدعيت معه. - التابع unpack: يفك ترميز السلسلة النصية التي استدعي معها (والتي قد تحوي بيانات ثنائية) وفقًا إلى سلسلة التنسيق المعطاة، ويعيد مصفوفة من كل قيمة مستخرجة.