الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نقل البيانات ألى بنية بيانات معرفة بواسطة ctypes

بدأه abgoor في 11 أغسطس 2011 · 0 رد · 544 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1

بسم الله الرحمن الرحيم

تستخدم المكتبة ctypes لأنشاء بنية بيانات مشابه للتي في لغة C كما في هذه البنية التي سنستخدمها في المثال :

from ctypes import *
 class A(Structure):
     _fileds_=[("x",c_int16),
               ("y",c_int16)]

و هذه حزمة البيانات "raw data" التي سنقوم بنقلها ألى بنية البيانات و هي عبارة عن سلسة نصية مكتوبة بواسطة محارف Hex

packet="\x02\x01\x00\xf0"

لنقل البيانات من نوع string ألى البنية A يجب أن نستخدم الأمر memmove كالتالي:

a=A()
memmove(addressof(a),packet,sizeof(a))

الأن تم نقل القيم كالتالي ألى البنية "Structure" و لكي تتأكد من القيم قم بأستدعاء القيمتين x و y يجب أن يكون مساويتين لتالي:

>>> a.x
258
>>> a.y
-4096

و لقيام بالعملية بطريقة عكسية أي الحصول على سلسة نصية من بنية برمجية سنستخدم الأمر string_at كالتالي:

string_at(addressof(a),sizeof(a))

هذه الطريقة مفيدة في حالة التعامل مع الملفات الثنائية "Binary" و برمجة الشبكات و بخاصة برمجة Raw_socket :cool:

2

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…