مخرجات bencode القياسية
رمز البايتات والأعداد الصحيحة المحدودة والقوائم والقواميس ذات المفاتيح البايتية بصيغة bencode مرتبة وقياسية حتى 65536 بايت خرج.
def bencode(value):
active, visited, used, parts = set(), 0, 0, []
def emit(*chunks):
nonlocal used
size = sum(len(chunk) for chunk in chunks)
if size > 65536 - used:
raise ValueError("bencode.output")
used += size
parts.extend(chunks)
def encode(item, depth):
nonlocal visited
visited += 1
if depth > 16 or visited > 2048:
raise ValueError("bencode.bounds")
if type(item) is int:
if not -10**18 <= item <= 10**18:
raise ValueError("bencode.integer")
emit(b"i", str(item).encode("ascii"), b"e")
elif type(item) is bytes:
if len(item) > 65536:
raise ValueError("bencode.bytes")
emit(str(len(item)).encode("ascii"), b":", item)
elif type(item) in (list, dict):
if id(item) in active or len(item) > 64:
raise ValueError("bencode.container")
active.add(id(item))
try:
emit(b"l" if type(item) is list else b"d")
if type(item) is list:
for child in item:
encode(child, depth+1)
else:
if any(type(k) is not bytes for k in item):
raise ValueError("bencode.key")
for key in sorted(item):
encode(key, depth+1)
encode(item[key], depth+1)
emit(b"e")
finally:
active.remove(id(item))
else:
raise ValueError("bencode.type")
encode(value, 0)
return b"".join(parts)
- المشروع
- اختبر الحاويات الفارغة والتداخل وارفض الدورات والقيم المنطقية والأعداد خارج ±10^18 وأكثر من 64 عنصراً للحاوية أو عمق يزيد على 16 أو أكثر من 2048 قيمة مزارة.
- راجع قبل التطبيق
- قارن السلوك الفعلي بالنتيجة المتوقعة. إذا فشل فحص، تحقّق من السبب قبل إجراء تغييرات إضافية.
- النماذج
- اضبط نقطة اتصال متوافقة مع OpenAI أو Anthropic باستخدام العنوان الأساسي ومفتاح API عند الحاجة. اختبر الاتصال. يجب أن يعمل خادم النموذج المحلي؛ وقد ترسل الأدوات البعيدة البيانات بشكل منفصل.
def bencode(value):
active, visited, used, parts = set(), 0, 0, []
def emit(*chunks):
nonlocal used
size = sum(len(chunk) for chunk in chunks)
if size > 65536 - used:
raise ValueError("bencode.output")
used += size
parts.extend(chunks)
def encode(item, depth):
nonlocal visited
visited += 1
if depth > 16 or visited > 2048:
raise ValueError("bencode.bounds")
if type(item) is int:
if not -10**18 <= item <= 10**18:
raise ValueError("bencode.integer")
emit(b"i", str(item).encode("ascii"), b"e")
elif type(item) is bytes:
if len(item) > 65536:
raise ValueError("bencode.bytes")
emit(str(len(item)).encode("ascii"), b":", item)
elif type(item) in (list, dict):
if id(item) in active or len(item) > 64:
raise ValueError("bencode.container")
active.add(id(item))
try:
emit(b"l" if type(item) is list else b"d")
if type(item) is list:
for child in item:
encode(child, depth+1)
else:
if any(type(k) is not bytes for k in item):
raise ValueError("bencode.key")
for key in sorted(item):
encode(key, depth+1)
encode(item[key], depth+1)
emit(b"e")
finally:
active.remove(id(item))
else:
raise ValueError("bencode.type")
encode(value, 0)
return b"".join(parts)
حافظ على توافق تغييرات التسلسل وحدودها
قد يتغير معنى المخرجات الثنائية دون أن يبدو مختلفاً في مقارنة نصية عادية. Bencora مساحة عمل للبرمجة بالذكاء الاصطناعي على Windows لمراجعة شيفرة التسلسل مع مراعاة هذا الخطر. افتح مشروعك واطلب من النموذج المتصل فحص القيم المقبولة وعقد المخرجات والشيفرة المستهلكة قبل اقتراح تعديل.
قد تراجع مهمة ملموسة مخرجات bencode المعيارية لكاتب بيانات وصفية. اطلب من المساعد فحص ترتيب مفاتيح البايتات والحاويات المتداخلة ورفض الأنواع غير المدعومة. قدم حالات مخرجات معروفة وصف حدود التطبيق اللازمة. ركز الاقتراح على ذلك الكاتب ومستدعيه بدلاً من افتراض أن تغيير المُسلسِل غير ضار لأنه ينتج بايتات تبدو صالحة.
افحص حدود الموارد إلى جانب التحويلات العادية ذهاباً وإياباً. شغّل اختباراتك لأقصى عمق وللمخرجات المفرطة الحجم والحاويات الدورية، وقارن البايتات الدقيقة لقواميس تمثيلية. افحص مسارات التنظيف بعد الرفض كي لا تفسد محاولة فاشلة العمل اللاحق. يحتاج التوافق إلى أدلة من مستهلكي المشروع وأمثلة ينجح ترميزها معاً.
يدعم Bencora اتصالات بنقاط نهاية متوافقة مع OpenAI أو نقاط نهاية Anthropic. يمكن اختيار نموذج ذكاء اصطناعي بلا رقابة حين توفره الخدمة المضبوطة، وتحدد هذه التهيئة الأدوات والقيود والسياق. استخدم المحادثة لشرح التغيير، بينما تثبت حالات اختبارك بقاء عقد المخرجات سليماً.
مراجعة كاتب ثنائي بأمان
لماذا نقارن البايتات الدقيقة لا القيم المفكوكة وحدها؟
قد تخفي قيم مفكوكة متكافئة فروق ترتيب أو تمثيل مهمة لتنسيق معياري. احتفظ بحالات بايتات معروفة لهذه المتطلبات وافحصها إلى جانب فحوص التحويل ذهاباً وإياباً المستخدمة في المشروع.
ما السياق المهم لترتيب القاموس؟
اعرض أنواع المفاتيح الفعلية والمستهلكين الذين يعتمدون على المخرجات المرمزة. اطلب من المساعد تمييز ترتيب البايتات عن ترتيب النص الخاص باللغة. قد يغير تحويل مريح إلى سلسلة عقداً معرفاً على بايتات خام.
هل نفحص حجم المخرجات بعد الترميز فقط؟
راجع سياسة الموارد التي يحتاجها تطبيقك. قد يأتي فحص نهائي للحجم بعد عمل أو تخصيص كبير. اسأل أين يفرض الاقتراح الحدود واختبر مسارات الرفض، بما فيها قيم متداخلة تتجاوز المخرجات المسموح بها.
لماذا ندرج حاوية دورية؟
تفحص كيفية تعامل الكاتب مع مدخل لا يمكن توسيعه كشجرة منتهية عادية. تحقق من الرفض الصريح والتنظيف. أمثلة الترميز الناجحة من النموذج لا تثبت انتهاء معالجة بنى حاويات مشوهة بصورة صحيحة.
Bencora · آخر تحديث 2026-10-25