ForHosting KIT · أدوات المطورين

حاسبة إزاحة حقول struct

تضع مُصرّفات C وC++ كل عضو في struct عند إزاحة بالبايت تحترم محاذاته الطبيعية، ثم تضيف حشوًا للنوع كاملًا كي تبقى مصفوفات الـstruct محاذاة.

● Betaمجاني · داخل متصفحك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا

هذا التخطيط هو بالضبط ما تبلّغ عنه الماكرو offsetof والمُعامل sizeof، ومع ذلك فإن عدّ الحشو يدويًا عبر ABI و#pragma pack ما يزال يُحدث أخطاء صامتة في البروتوكولات الثنائية وروابط FFI ومقالب الذاكرة. تقبل حاسبة إزاحة حقول الـstruct قائمة مرتّبة من الحقول بأنواع سلمية معروفة في C أو بحجم ومحاذاة صريحين، وتطبّق قواعد الرفع نفسها التي يستخدمها المُصرّف، وتعيد إزاحة كل حقل والحشو قبله وحجم الـstruct الكلي والمحاذاة العامة والحشو الختامي. قيم pack الاختيارية تمثّل البنى المعبّأة، وabi الاختياري يختار LP64 أو LLP64 أو ILP32 لعرض long والمؤشرات. يشترك مسار المتصفح المجاني وواجهة API المدفوعة مسبقًا في وحدة تحليلية نقية واحدة، فلا تختلف مفاتيح التمارين عن أوراكل الإنتاج. فشل التحقق يرفع invalid_input ولا يُحاسب.

طريقة الاستخدام

أدخل القيم في النموذج أعلاه. تتحقق الأداة منها قبل الحساب ثم تعرض النتيجة في الصفحة نفسها.

راجع بياناتك

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

أعد الحساب أو نفّذه آليًا

استخدم أداة الويب للفحوص الفردية، واستخدم الواجهة البرمجية عند دمج الإمكانية نفسها في سير عمل آلي.

احصل على النتيجة الآن

أدخل مجموعة من القيم وشاهد النتيجة من دون إعداد جدول بيانات أو برنامج نصي.

قارن السيناريوهات

غيّر قيمة واحدة في كل مرة وأعد الحساب لمعرفة ما الذي يؤثر في النتيجة.

أتمت العمل المتكرر

استخدم الواجهة البرمجية عندما تحتاج إلى تشغيل الحساب نفسه داخل منتجك أو سير عملك.

كيف أحسب إزاحات حقول struct في C؟

أرسلوا fields كمصفوفة مرتّبة من {name, type} (أو {name, size, alignment}). تعيد API إزاحة كل عضو وpadding_before وstruct_size وstruct_alignment وفق قواعد الرفع القياسية في C.

هل يطابق هذا الماكرو offsetof؟

نعم للأعضاء السلمية تحت ABI المختار وقيمة pack الاختيارية. تتبع الإزاحات وsizeof قواعد الوضع نفسها التي يستخدمها المُصرّفون للبنى السلمية الطبيعية أو المعبّأة.

ماذا يفعل pack؟

يمثّل pack القيمة #pragma pack(n). المحاذاة الفعلية لكل حقل هي min(natural_alignment, n). احذفوا pack للتخطيط الطبيعي (غير المعبّأ).

ما ABI المدعومة؟

lp64 (الافتراضي: long والمؤشر 8 بايت)، وllp64 (Windows 64 بت: long 4 والمؤشر 8)، وilp32 (long والمؤشر 4). الأنواع ثابتة العرض مثل uint32_t متماثلة في الثلاثة.

كم تكلفة حاسبة إزاحة حقول struct؟

أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ الإدخال غير الصالح لا يُحاسب.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/dev/struct-field-offset

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/dev/struct-field-offset \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fields":[{"name":"a","type":"char"},{"name":"b","type":"int"},{"name":"c","type":"char"}]}'
{
  "fields": [
    {
      "name": "a",
      "type": "char"
    },
    {
      "name": "b",
      "type": "int"
    },
    {
      "name": "c",
      "type": "char"
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.struct_field_offset",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

اطّلع على توثيق KIT الكامل ←