Dekoder Protocol Buffers
Periksa pesan Protocol Buffers yang telah dienkode tanpa mengunggahnya atau berpura-pura mengetahui skemanya. Dekoder berbasis peramban ini menerima input heksadesimal, Base64, Base64URL, UTF-8 mentah, atau file biner yang dipilih secara eksplisit. Alat menelusuri setiap wire type protobuf yang valid, menjaga ketepatan bilangan bulat 64-bit, melaporkan offset yang rusak, dan menampilkan seluruh interpretasi lengkap dari byte length-delimited yang ambigu. Payload tetap berada di peramban Anda, dan dekoder tidak pernah menghubungi layanan yang namanya tercantum di dalam data.
Cara kerjanya
-
1
Pilih encoding yang tepat
Pilih hex, Base64, Base64URL, UTF-8 mentah, atau file biner. Alat tidak pernah menebak format input secara otomatis.
-
2
Periksa field wire
Dekode tag, nomor field, dan nilai wire, lalu perluas setiap kandidat nested atau packed yang valid tanpa menetapkan tipe skema.
-
3
Ekspor laporan
Unduh JSON tanpa skema, CSV yang aman dari formula, atau laporan teks yang mudah dibaca untuk analisis lebih lanjut.
Hal yang dapat dipastikan dekoder Protobuf tanpa skema
Protocol Buffers menyimpan rangkaian tag dan nilai field, bukan deklarasi asli dari .proto. Panduan encoding protobuf resmi mendefinisikan setiap tag dengan menggeser nomor field sebanyak tiga bit lalu menggabungkannya dengan wire type, setara dengan field_number × 8 + wire_type. Karena itu, dekoder dapat memastikan nomor field, wire type, batas byte, dan encoding yang mungkin secara struktural. Namun, alat tidak dapat memastikan apakah suatu varint dideklarasikan sebagai uint64, int64, sint64, bool, atau enum karena deklarasi tersebut dapat memakai byte yang sama.
Mode input selalu dipilih secara eksplisit. Hex menerima whitespace ASCII dan paling banyak satu awalan 0x. Base64 dan Base64URL divalidasi secara terpisah, termasuk panjang, padding, dan bit padding yang tidak terpakai; alfabet standar tidak boleh dicampur dengan alfabet URL-safe. Teks mentah berarti byte UTF-8 persis yang dihasilkan TextEncoder milik peramban, escape dengan garis miring terbalik tidak ditafsirkan. Input file menggunakan byte asli file.
Wire type dan interpretasinya
| Wire type | Nilai yang dienkode | Yang ditampilkan laporan |
|---|---|---|
| 0 | Varint | Nilai unsigned yang tepat, nilai signed komplemen dua, dan ZigZag; Boolean hanya untuk 0 atau 1 |
| 1 | Delapan byte little-endian | Bilangan fixed64 dan sfixed64 yang tepat serta kandidat double |
| 2 | Panjang diikuti byte | Hex dan Base64, UTF-8 ketat jika valid, serta setiap kandidat nested atau packed yang lengkap |
| 3 / 4 | Tag awal dan akhir group | Anak group dengan nomor field yang cocok; tag akhir adalah pembatas, bukan record tersendiri |
| 5 | Empat byte little-endian | Bilangan fixed32 dan sfixed32 yang tepat serta kandidat float |
Tipe number biasa JavaScript tidak dapat mewakili setiap bilangan bulat 64-bit secara tepat. Dekoder ini menggunakan BigInt di seluruh parser wire dan mengubah bilangan bulat menjadi string desimal untuk tampilan dan ekspor. Nilai floating-point khusus seperti NaN, tak terhingga, dan nol negatif juga diekspor sebagai string agar JSON tidak diam-diam mengubahnya menjadi nilai lain.
Memahami ambiguitas length-delimited
Wire type 2 dipakai untuk string, byte mentah, embedded message, dan nilai skalar repeated yang packed. Tanpa skema, satu urutan byte dapat valid untuk beberapa peran sekaligus. Contohnya, 2a 03 01 02 03 adalah field 5 yang berisi tiga byte. Byte tersebut valid sebagai packed varint [1, 2, 3], tetapi juga merupakan byte biasa. Dekoder menampilkan kedua kandidat dan tidak menganggap salah satunya lebih mungkin.
Kandidat nested message hanya muncul jika seluruh isi length-delimited dapat diurai sebagai pesan lengkap. Kandidat packed varint, fixed32, dan fixed64 juga hanya muncul jika semua byte habis dalam interpretasi tersebut. Kandidat UTF-8 ketat mengharuskan seluruh urutan dapat didekode tanpa karakter pengganti. Pemeriksaan ini menunjukkan kemungkinan struktur, bukan tipe field yang dideklarasikan.
Group ditangani sesuai tata bahasa wire walaupun skema modern biasanya memilih embedded message. Tag start-group harus ditutup oleh tag end-group dengan nomor field yang sama. Tag akhir di root, tag yang tidak cocok, atau tag akhir yang hilang menghentikan decoding pada offset byte yang tepat. Field yang selesai didekode sebelum kegagalan tetap terlihat; byte yang hilang dan nilai yang tidak diketahui tidak pernah dijadikan nol palsu.
Batas, framing, dan penanganan aman
Dekoder menerima satu pesan tanpa frame hingga 10 MiB. Alat tidak memisahkan stream dengan awalan panjang, frame gRPC, file delimited-message, atau pembungkus transportasi. Lepaskan framing terlebih dahulu, lalu dekode satu pesan. Parser juga membatasi jumlah record, kedalaman rekursi, baris yang terlihat, dan pekerjaan untuk memeriksa kandidat. Kendali ini mengikuti prinsip panduan resmi tentang kumpulan data besar dan batas implementasi: protobuf efisien, tetapi tab diagnostik peramban tetap memerlukan batas memori dan pekerjaan.
Nomor field harus berada di antara 1 dan 536.870.911. Dekoder memperingatkan nomor 19.000–19.999 karena panduan nomor field resmi mencadangkan rentang tersebut untuk implementasi. Wire type 6 dan 7 tidak valid.
Parsing dan ekspor berlangsung secara lokal. Tampilan bertahap dapat menyimpan payload terbatas di sessionStorage tab ini hingga dua jam; memulai dari awal akan menghapusnya. Tidak ada data yang dimasukkan ke URL atau dikirim melalui server kami. Output JSON secara tegas merupakan laporan decoding dalam format khusus alat ini, bukan ProtoJSON. CSV diawali BOM UTF-8 dan sel yang menyerupai formula diberi awalan agar lebih aman ketika dibuka di spreadsheet. Laporan tetap dapat memuat data aplikasi rahasia, jadi periksalah sebelum membagikannya.
Pertanyaan yang Sering Diajukan
Tidak. Wire format menyimpan nomor field dan encoding wire, tetapi tipe skalar yang berbeda dapat memakai byte yang sama. Nama, komentar, dan sebagian besar maksud skema tidak tersimpan.
Tidak. Validasi input, parsing, pemfilteran, dan ekspor dijalankan di peramban Anda. Payload tidak dikirim melalui server kami maupun dimasukkan ke URL.
Nilai length-delimited dapat mewakili byte, teks UTF-8, embedded message, atau nilai packed secara sah. Tanpa skema, menampilkan setiap kandidat lengkap lebih jujur daripada menebak.
Tag, varint, nilai berlebar tetap, panjang yang dideklarasikan, atau batas group tidak lengkap atau tidak valid di posisi tersebut. Field lengkap sebelumnya tetap berada dalam laporan parsial.
Tidak secara langsung. Dekoder membaca satu pesan protobuf dan tidak menghapus framing gRPC, panjang varint, atau pembungkus transportasi lain. Ekstrak satu payload pesan terlebih dahulu.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Generator Tabel Markdown
Buat tabel Markdown secara visual atau tempelkan file berformat CSV/TSV. Atur penjajaran kolom, pengisian ruang kosong (padding), dan baris kepala; kemudian salin hasil tampilan Markdown yang telah diatur tersebut.
JSON ke YAML
Konversi JSON ke YAML dengan penjelajaran yang tepat, penutupan string yang aman, skalar blok berbaris ganda, serta kunci yang tersortir untuk konfigurasi yang lebih rapi.
Generator Konfigurasi Nginx
Buat server block Nginx dengan TLS, HTTP/2, gzip, cache browser, dan aturan reverse proxy hanya dari sebuah formulir sederhana.
Markdown ke Slide
Ubah Markdown menjadi rangkaian slide dengan pemisah `---`, catatan pembicara, serta ekspor ke HTML atau PDF. Didukung oleh Reveal.js.
Alat ini tersedia dalam bahasa lain
- Protocol Buffers 디코더 [KO]
- Protocol Buffers-avkodare [SV]
- Protocol Buffers-decoder [NL]
- Dekoder Protocol Buffers [PL]
- Protocol-Buffers-Decoder [DE]
- ตัวถอดรหัส Protocol Buffers [TH]
- Decodificador de Protocol Buffers [ES]
- أداة فك ترميز Protocol Buffers [AR]
- Décodeur Protocol Buffers [FR]
- Protocol Buffers デコーダー [JA]
- Decodificador de Protocol Buffers [PT]
- Công cụ giải mã Protocol Buffers [VI]
- Protocol Buffers Decoder [EN]
- Decodificatore Protocol Buffers [IT]
- Декодер Protocol Buffers [RU]
- Protocol Buffers Kod Çözücü [TR]
- Protocol Buffers 解码器 [ZH]