BBencora
ขั้นตอนการทำงาน

ขั้นตอนการเขียนโค้ด · ผลลัพธ์ bencode แบบมาตรฐาน

03
ผลิตภัณฑ์

ขั้นตอนการทำงาน

เข้ารหัสไบต์ จำนวนเต็มมีขอบเขต รายการ และพจนานุกรมคีย์ไบต์เป็น bencode มาตรฐานเรียงคีย์ไม่เกิน 65536 ไบต์ผลลัพธ์. ทดสอบภาชนะว่างและการซ้อน ปฏิเสธวงจร บูลีน จำนวนเกิน ±10^18 มากกว่า 64 รายการต่อภาชนะ ความลึกเกิน 16 หรือค่าที่เยี่ยมเกิน 2048.

01

ดาวน์โหลดแอป

เลือกโฟลเดอร์และให้ผู้ช่วยอ่านไฟล์ที่เกี่ยวข้องก่อนแก้ไข ระบุเป้าหมายและขอบเขตของงานให้ชัดเจน

02

เปิดโฟลเดอร์โปรเจกต์

เลือก endpoint ที่เข้ากันได้ เครื่องมือที่ใช้ได้และคุณภาพคำตอบขึ้นอยู่กับโมเดลและเซิร์ฟเวอร์ที่ตั้งค่า

03

เชื่อมต่อและทดสอบโมเดล

ตรวจสอบการแก้ไขและผลลัพธ์คำสั่ง รันการตรวจสอบของโปรเจกต์ก่อนยอมรับผล โค้ดที่สร้างขึ้นไม่ได้ผ่านการทดสอบโดยอัตโนมัติ

04

ตรวจสอบการแก้ไขและรันการทดสอบ

เปรียบเทียบการทำงานจริงกับผลที่คาดหวัง หากการตรวจสอบไม่ผ่าน ให้หาสาเหตุก่อนแก้ไขเพิ่มเติม

ผลลัพธ์ bencode แบบมาตรฐาน

ขั้นตอนการทำงาน
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)

ตรวจสอบก่อนนำไปใช้. ตรวจสอบการแก้ไขและผลลัพธ์คำสั่ง รันการตรวจสอบของโปรเจกต์ก่อนยอมรับผล โค้ดที่สร้างขึ้นไม่ได้ผ่านการทดสอบโดยอัตโนมัติ

พื้นที่เขียนโค้ดด้วย AI

ไอเดียถัดไปเริ่มต้นที่นี่

ดาวน์โหลดสำหรับ Windows ↗