Rumah >pembangunan bahagian belakang >Golang >Hasilkan CRC-32 untuk SDT kepada ts. dokumen
editor php Yuzai akan memperkenalkan kepada anda kaedah untuk menjana CRC-32 melalui SDT ke ts untuk mengesahkan integriti fail. CRC-32 ialah algoritma checksum yang biasa digunakan yang menghasilkan nilai semakan 32-bit dengan mengira data binari fail. Nilai semakan ini boleh digunakan untuk mengesahkan sama ada ralat atau rasuah berlaku semasa pemindahan atau penyimpanan fail. Menggunakan kaedah ini, kami boleh memastikan integriti fail dan meningkatkan kebolehpercayaan pemindahan data.
Tugas saya ialah menangkap aliran video dari pelayan dan menulisnya ke ts. dokumen. Saya menghadapi masalah untuk menulis pakej SDT ke ts. Saya secara manual membentuk paket mengikut bait tetapi tidak tahu cara mengira CRC-32 daripada 4 bait pada penghujung SDT. (menggunakan golang)
Saya cuba mendapatkan CRC berdasarkan checksum data yang telah ditulis ke paket SDT, tetapi ia tidak berfungsi. Dalam SDT dihuraikan bait demi bait, CRC berbeza daripada apa yang saya kira.
Jika anda bercakap tentang mpeg-2, crc ditakrifkan sebagai:
width=32 poly=0x04c11db7 init=0xffffffff refin=false refout=false xorout=0x00000000 check=0x0376e6e7 residue=0x00000000 name="crc-32/mpeg-2"Terdapat contoh dalam
00 3f 86 dd 00 01 02 03 04 05 60 00 00 00 00 0d 3a 40 20 01 0d b8 30 08 19 65 00 00 00 00 00 00 00 01 20 01 0d b8 25 09 19 62 00 00 00 00 00 00 00 02 80 00 9d 8c 06 38 00 04 00 00 00 00 00 7c 17 17 63
Di mana empat bait terakhir ialah crc-32/mpeg-2 (dalam susunan big-endian) bagi semua bait yang mendahuluinya.
Berikut ialah contoh kod c untuk mengira crc:
#include <stddef.h> #include <stdint.h> uint32_t crc32mpeg2(uint32_t crc, void const *mem, size_t len) { unsigned char const *data = mem; if (data == NULL) return 0xffffffff; for (size_t i = 0; i < len; i++) { crc ^= (uint32_t)data[i] << 24; for (unsigned k = 0; k < 8; k++) { crc = crc & 0x80000000 ? (crc << 1) ^ 0x4c11db7 : crc << 1; } } return crc; }
(Apabila mem
等于null
, kembalikan nilai crc awal.)
Atas ialah kandungan terperinci Hasilkan CRC-32 untuk SDT kepada ts. dokumen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!