BBencora
AI 코딩 작업 공간

정규 bencode 출력

바이트, 제한된 정수, 목록, 바이트 키 사전을 키 순서의 정규 bencode로 인코딩하되 출력은 65536바이트 이하로 하세요.

● ● ●Bencora●
작업 흐름 · 정규 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)
✳정규 bencode 출력
✓ 변경 사항적용하기 전에 검토하세요 ↗
작업 공간 예시 화면
프로젝트
빈 컨테이너와 중첩을 시험하고 순환, 불리언, ±10^18 밖의 정수, 컨테이너의 64개 초과 항목, 16 초과 깊이, 2048개 초과 방문 값을 거부하세요.
적용하기 전에 검토하세요
실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
모델
기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
작업 흐름

정규 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 코딩 작업 공간

직렬화 변경의 호환성과 범위 제한을 유지하세요

바이너리 출력은 일반 텍스트 차이에서 달라 보이지 않으면서 의미가 바뀔 수 있습니다. Bencora는 이 위험을 고려해 직렬화 코드를 검토하는 Windows용 AI 코딩 작업 공간입니다. 프로젝트를 열고 연결한 모델이 패치를 제안하기 전에 허용 값, 출력 계약, 사용 코드를 검토하도록 요청하세요.

구체적인 작업으로 메타데이터 작성기의 정규 bencode 출력을 검토할 수 있습니다. 바이트 키 순서, 중첩 컨테이너, 미지원 타입 거부를 살펴보도록 요청하세요. 알려진 출력 테스트 데이터를 제공하고 애플리케이션에 필요한 한계를 설명하세요. 유효해 보이는 바이트가 나온다고 직렬화 변경이 무해하다고 가정하지 말고 해당 작성기와 호출 코드에 제안의 초점을 맞추세요.

일반 왕복 변환과 함께 자원 경계를 확인하세요. 최대 깊이, 과도한 출력, 순환 컨테이너에 대한 자체 테스트를 실행하고 대표 딕셔너리의 정확한 바이트를 비교하세요. 실패한 시도가 이후 작업을 손상시키지 않도록 거부 후 정리 경로를 살펴보세요. 호환성에는 인코딩 성공 예시뿐 아니라 프로젝트의 사용 코드에서 나온 증거도 필요합니다.

Bencora는 OpenAI 호환 또는 Anthropic 엔드포인트 연결을 지원합니다. 설정한 서비스가 제공하는 경우 무검열 AI 모델을 선택할 수 있으며, 도구, 제한, 컨텍스트는 해당 설정에 따라 결정됩니다. 대화로 변경을 설명하고 테스트 데이터로 출력 계약이 유지되는지 입증하세요.

바이너리 작성기를 안전하게 검토하기

디코딩 값만이 아니라 정확한 바이트를 비교하는 이유는 무엇인가요?

디코딩 값이 같아도 정규 형식에 중요한 순서나 표현 차이가 숨을 수 있습니다. 해당 요구 사항의 알려진 바이트 테스트 데이터를 유지하고 프로젝트의 기존 왕복 검사와 함께 살펴보세요.

딕셔너리 순서에 어떤 맥락이 중요한가요?

실제 키 타입과 인코딩 출력에 의존하는 사용 코드를 보여 주세요. 바이트 순서와 언어별 텍스트 순서를 구분하도록 요청하세요. 편리한 문자열 변환이 원시 바이트에 대해 정의된 계약을 바꿀 수 있습니다.

출력 크기는 인코딩 후에만 검사해야 하나요?

애플리케이션에 필요한 자원 정책을 검토하세요. 최종 크기 검사는 상당한 작업이나 메모리 할당 뒤에 이루어질 수 있습니다. 제안이 어디서 한계를 강제하는지 묻고 허용 출력을 초과하는 중첩 값을 포함해 거부 경로를 테스트하세요.

순환 컨테이너 사례를 포함하는 이유는 무엇인가요?

일반적인 유한 트리로 펼칠 수 없는 입력을 작성기가 어떻게 처리하는지 확인합니다. 명시적인 거부와 정리를 검증하세요. 모델의 인코딩 성공 예시는 잘못된 컨테이너 구조에서도 올바르게 종료됨을 입증하지 않습니다.

Windows용 다운로드 ↗

Bencora · 업데이트 2026-10-25