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

مفكك LEB128 Varint

يحوّل مفكك LEB128 غير الموقع هذا تسلسل بايتات متغير الطول إلى قيمته الصحيحة الدقيقة.

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

أدخلوا بايتات ست عشرية مثل E5 8E 26، أو اختاروا التدوين العشري عندما يعرض المصدر أرقام البايتات العادية. يتتبع المفكك بت الاستمرار في كل بايت، ويتحقق من انتهاء التسلسل بصورة سليمة، ثم يعيد البايتات بعد توحيد تنسيقها مع النتيجة العشرية. يفيد ذلك عند فحص ملفات WebAssembly الثنائية، وحمولات Protocol Buffers، وبيانات تصحيح DWARF، وغيرها من التنسيقات المضغوطة.

كيفية تخزين العدد الصحيح في LEB128 غير الموقع

يمثل LEB128 الأعداد الصحيحة بالأساس 128 وبترتيب little-endian. يساهم كل بايت بسبعة بتات من البيانات، بينما يُحجز البت الأعلى ليكون علامة استمرار. إذا كانت قيمته واحداً فهذا يعني أن بايتاً آخر ينتمي إلى العدد نفسه، وإذا كانت صفراً ينتهي العدد عند ذلك الموضع. ولأن المجموعة الأقل أهمية تأتي أولاً، تشغل بيانات البايت الأول مواضع البت من صفر إلى ستة، وتشغل بيانات البايت التالي المواضع من سبعة إلى ثلاثة عشر، وهكذا. على سبيل المثال، تعطي E5 8E 26 المجموعات 65 و0E و26 بعد إزالة علامات الاستمرار. يؤدي جمعها بإزاحات متتابعة مقدارها سبعة بتات إلى القيمة 624485. لذلك تحتاج القيم الصغيرة إلى بايتات أقل، بينما تتمدد القيم الكبيرة من دون أصفار بادئة غير ضرورية. تفك هذه الإمكانية الصيغة غير الموقعة فقط؛ فلا تطبق تمديد الإشارة ولا تفسر البت الأعلى من البيانات بوصفه علامة سالبة. وتُعاد النتيجة كسلسلة عشرية للمحافظة على الدقة حتى عند تجاوز مجال الأعداد الصحيحة الآمنة في JavaScript.

إدخال تسلسل البايتات والتحقق منه

ألصقوا عدداً صحيحاً واحداً مكتمل الترميز في حقل النص. في الوضع الست عشري الافتراضي، اكتبوا رموز بايت من خانة أو خانتين وافصلوا بينها بمسافات أو فواصل أو نقطتين أو شرطات؛ فالمدخلان E5 8E 26 و0xE5,0x8E,0x26 متكافئان. تشير البادئة 0x دائماً إلى النظام الست عشري. اختاروا الوضع العشري عندما تعرض أداة الفحص البايتات كأعداد من 0 إلى 255، مثل 229 142 38. يرفض المفكك الرموز غير السليمة، والقيم الخارجة عن مجال البايت، والمدخل الفارغ، والتسلسلات التي تتجاوز الحد المنشور البالغ 128 بايتاً. كما يتحقق من البنية. فكل بايت يكون بته الأعلى مفعلاً يَعِد بوجود بايت تالٍ، ولذلك يكون التسلسل المنتهي بـ80 غير مكتمل. وعندما يظهر بايت ببت أعلى غير مفعل تكون القيمة قد انتهت؛ لذا يُرفض أي رمز لاحق بدلاً من تجاهله أو اعتباره عدداً آخر. تجعل هذه القواعد أخطاء الإدخال ظاهرة، وتمنع الحصول على نتيجة تبدو صحيحة من تسلسل مبتور أو عدة تسلسلات ملتصقة.

استخدام النتيجة عند تصحيح البيانات الثنائية

تتضمن الاستجابة القيمة العشرية الدقيقة، وعدد البايتات المستهلكة، ومصفوفة البايتات التي جرى تحليلها، وتمثيلاً ست عشرياً موحداً بأحرف كبيرة. تسهّل هذه الحقول مقارنة النتيجة بتفريغ ست عشري أو إضافتها إلى حالة اختبار. يستخدم WebAssembly صيغة LEB128 غير الموقعة في كثير من الفهارس والأطوال والمعاملات الصحيحة الفورية. ويستخدمها DWARF للسمات المضغوطة، بينما يستخدم Protocol Buffers ترتيب varint قريباً منها بالأساس 128. في كل حالة، ابدؤوا من البايت الذي يحدده التنسيق المحيط، واجمعوا البايتات حتى أول بايت يكون بت استمراره غير مفعل، ثم فكوا ذلك المقطع وحده. إذا بدت النتيجة غير صحيحة، فتحققوا من موضع البداية ومن كون الحقل غير موقع فعلاً. تحتاج صيغة LEB128 الموقعة وترميز zigzag في Protocol Buffers إلى تفسير إضافي لا ينفذه هذا المفكك عمداً. وللفحوص الآلية، استدعوا العملية الحتمية نفسها عبر API مقابل $0.002؛ فالمدخلات المتطابقة تعطي دائماً مخرجات متطابقة.

فحص ملف WebAssembly ثنائي

فكوا فهرساً أو طول قسم أو قيمة فورية غير موقعة منسوخة من تفريغ WebAssembly ست عشري.

تصحيح varint في Protocol Buffers

استخرجوا العدد الصحيح الخام غير الموقع الذي يمثله varint بالأساس 128 قبل تطبيق تفسير الحقل.

قراءة بيانات تصحيح DWARF

حوّلوا سمة أو معاملاً من ULEB128 إلى قيمة عشرية دقيقة وتحققوا من بايت النهاية.

ما تكلفة استخدام المفكك؟

تكلفة كل طلب API هي $0.002. أما إصدار المتصفح فيعمل محلياً ويمكن استخدامه مجاناً.

هل يفك قيماً موقعة بصيغة LEB128؟

لا. فهو يفك LEB128 غير الموقع فقط ولا يطبق تمديد الإشارة.

لماذا تُعاد القيمة كسلسلة نصية؟

تحافظ السلسلة العشرية على الأعداد الصحيحة التي تتجاوز المجال العددي الدقيق والآمن في JavaScript.

هل يمكن لصق بايتات تبدأ بالبادئة 0x؟

نعم. تحدد البادئة 0x التدوين الست عشري دائماً لذلك البايت.

لماذا يفشل بايت أخير مثل 80؟

لأن بت الاستمرار فيه مفعل، أي إن الترميز يشير إلى بايت تالٍ لم يتم إدخاله.

هل يكون varint في Protocol Buffers دائماً القيمة النهائية؟

ليس بالضرورة. قد تطبق الحقول الموقعة تفسير zigzag أو المتمم الثنائي بعد فك varint الخام.

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

POSThttps://api.kit.forhosting.com/dev/leb128-decode

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

curl -X POST https://api.kit.forhosting.com/dev/leb128-decode \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"E5 8E 26"}'
{
  "text": "E5 8E 26"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.leb128_decode",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

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

لكل طلب$0.002

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

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

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