تقنية

3s و3c في بايثون: هل لهما عدد القيم نفسه؟

3s: حزمة bud تعيد قيمة واحدة.
حزمة واحدة بقيمة واحدة.

3s يمثل قيمة bytes واحدة؛ 3c يمثل ثلاث قيم، كل منها بايت. [1]

الخلاصة السريعة

لا؛ يتساويان في الحجم ويختلفان في عدد القيم. [1]

  • 3s يمثل قيمة bytes واحدة؛ 3c يمثل ثلاث قيم، كل منها بايت. [1]
  • الحجم في الحالتين 3 بايتات؛ تساوي الحجم لا يعني تساوي عدد القيم. [1]
  • على CPython 3.12.14، يقتطع 3s من b"budleaf" أول ثلاثة بايتات: b"bud". [1]
  • فك b"bud" يعيد قيمة واحدة مع 3s، وثلاث قيم مع 3c. [1]
  • تحكم: ضم b"b" وb"u" وb"d" يطابق الحزمة؛ b"b" مع 3s تحشى بصفرين؛ يبقى المدخل. [1]

قيمة أم ثلاث قيم

3s يمثل قيمة bytes واحدة؛ 3c يمثل ثلاث قيم، كل منها بايت. [1]

الحجم وعدد القيم

الحجم في الحالتين 3 بايتات؛ تساوي الحجم لا يعني تساوي عدد القيم. [1]

سلسلة واحدة

على CPython 3.12.14، يقتطع 3s من b"budleaf" أول ثلاثة بايتات: b"bud". [1]

import struct raw=b"budleaf" s=struct.pack("3s",raw) print(s,struct.unpack("3s",s)) [1]

3c: الحزمة bud تعيد ثلاث قيم.
الحزمة نفسها بثلاث قيم.

ثلاث قيم والتحكم

فك b"bud" يعيد قيمة واحدة مع 3s، وثلاث قيم مع 3c. [1]

c=struct.pack("3c",b"b",b"u",b"d") print(c,struct.unpack("3c",c)) print(struct.pack("3s",b"b").hex()) [1]

تحكم: ضم b"b" وb"u" وb"d" يطابق الحزمة؛ b"b" مع 3s تحشى بصفرين؛ يبقى المدخل. [1]

المراجع

  1. Python struct

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.