RRiffMeadow
Ruang kerja kode dengan AI

Penelusuran batas bagian RIFF

Telusuri hingga 128 potongan dalam data RIFF WAVE sepanjang 12–1048576 bita yang ukurannya tepat sesuai deklarasi.

● ● ●RiffMeadow●
Alur kerja · Penelusuran batas bagian RIFF ×
def riff_chunks(wire):
    if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
        raise ValueError("riff.input")
    if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
        raise ValueError("riff.header")
    chunks, pos = [], 12
    while pos < len(wire):
        if len(chunks) == 128 or pos+8 > len(wire):
            raise ValueError("riff.chunk")
        tag = wire[pos:pos+4]
        size = int.from_bytes(wire[pos+4:pos+8], "little")
        start, stop = pos+8, pos+8+size
        next_pos = stop+(size & 1)
        if next_pos > len(wire):
            raise ValueError("riff.truncated")
        chunks.append((tag, wire[start:stop]))
        pos = next_pos
    return chunks
✳Penelusuran batas bagian RIFF
✓ PerubahanTinjau sebelum menerapkan ↗
Ilustrasi ruang kerja
01

Tinjau sebelum menerapkan

Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.

02

Model

Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.

03

Proyek

Uji potongan tak dikenal dan pengisi panjang ganjil, lalu tolak header atau muatan terpotong tanpa mendekode audio.

Alur kerja

Penelusuran batas bagian RIFF

Alur kerja ↗
Alur kerja
def riff_chunks(wire):
    if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
        raise ValueError("riff.input")
    if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
        raise ValueError("riff.header")
    chunks, pos = [], 12
    while pos < len(wire):
        if len(chunks) == 128 or pos+8 > len(wire):
            raise ValueError("riff.chunk")
        tag = wire[pos:pos+4]
        size = int.from_bytes(wire[pos+4:pos+8], "little")
        start, stop = pos+8, pos+8+size
        next_pos = stop+(size & 1)
        if next_pos > len(wire):
            raise ValueError("riff.truncated")
        chunks.append((tag, wire[start:stop]))
        pos = next_pos
    return chunks
Ruang kerja kode dengan AI

Tinjau impor berkas dari header hingga chunk terakhir

RiffMeadow membawa pemeliharaan format berkas ke ruang kerja pemrograman Windows dengan sumber proyek dan percakapan model terhubung. Mulailah dari perilaku impor yang perlu diubah dan identifikasi tindakan aplikasi terhadap chunk hasil penguraian. Minta model memeriksa jalur itu sebelum menyarankan perubahan pada satu perhitungan panjang.

Tugas menggunakan riff_chunks.py dapat menyelidiki berkas RIFF yang chunk berukuran ganjilnya memerlukan byte padding sebelum header berikutnya. Berikan data uji byte kecil dan batas chunk yang diharapkan. Tinjau panjang kontainer yang dinyatakan bersama perilaku pemotongan agar usulan menjelaskan alasan pembacaan berikutnya dimulai pada posisi tersebut.

Setelah memeriksa perubahan, jalankan data uji valid dan terpotong di lingkungan pengembangan sendiri dan periksa hasil impor melalui kode penggunanya. Sertakan tag chunk yang tidak dikenal jika aplikasi harus mempertahankan atau melewatinya. Bedakan penelusuran format dari interpretasi aplikasi: menemukan byte chunk tidak membuktikan isinya cocok untuk setiap operasi berikutnya.

Untuk bantuan model, konfigurasikan endpoint yang didukung, baik yang kompatibel dengan OpenAI maupun Anthropic, serta kredensial bila diperlukan. Model AI abliterasi dapat dipilih jika tersedia, dengan pembatasan yang ditentukan penyedia. Alat dan kapasitas konteks bergantung pada model serta server; data uji dan perilaku impor yang diharapkan menyediakan dasar konkret untuk menerima kode.

Sebelum mengubah pembaca berkas berbasis chunk

Mengapa panjang chunk ganjil memerlukan data uji sendiri?

Padding memengaruhi awal header berikutnya, sehingga contoh berpanjang genap dapat melewatkan cacat offset. Berikan berkas dengan chunk lain setelah chunk berpadding. Periksa batas hasil dan posisi akhir, bukan hanya penemuan chunk pertama.

Haruskah tag tidak dikenal membuat impor gagal?

Putuskan sesuai subset format dan perilaku aplikasi yang ingin didukung. Penelusuran dan interpretasi dapat memakai kebijakan berbeda. Minta model memeriksa kode pengguna hasil sebelum mengubah penanganan tag, dan sertakan tag tidak dikenal dalam data uji jika diterima.

Apa yang perlu ditunjukkan pengujian berkas terpotong?

Identifikasi batas yang dinyatakan yang melampaui byte tersedia dan perilaku penolakan yang diharapkan pemanggil. Sertakan header atau payload yang dipendekkan sesuai kebutuhan. Tinjau jalur impor agar antarmuka tidak salah menganggap penguraian sebagian sebagai berkas yang berhasil dimuat.

Apakah keberhasilan penelusuran chunk membuktikan audio valid?

Tidak. Itu hanya membuktikan pemeriksaan batas yang dicakup kode dan pengujiannya. Interpretasi metadata audio atau data sampel merupakan tugas logika tambahan. Fokuskan peninjauan pada perubahan parser yang diminta dan verifikasi tahap berikutnya jika aplikasi bergantung padanya.

Unduh untuk Windows ↗

RiffMeadow · Diperbarui 2026-10-25