10 Ağustos 2017 Perşembe

CRC

crc_basic Sınıfı
Örnek
Şöyle yaparız.
unsigned char const  data[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
std::size_t const    data_len = sizeof(data) / sizeof(data[0]);

boost::crc_basic<16>  crc_basic(0x1021, 0xFFFF, 0, false, false);
crc_basic.process_bytes(data, data_len);

crc_basic.checksum();
crc_optimal Sınıfı
Örnek
Şöyle yaparız.
unsigned char const  data[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
std::size_t const    data_len = sizeof(data) / sizeof(data[0]);
   
boost::crc_optimal<16, 0x1021, 0xFFFF, 0, false, false> crc_optimal;
crc_optimal.process_bytes(data, data_len);

crc_optimal.checksum();
crc_ccitt_type Sınıfı- 16 bit
checksum metodu
Şöyle yaparız.
const unsigned char data[] = {0x32, 0x31, 0x1E, 0x33, 0x35, 0x30};
boost::crc_ccitt_type result;
result.process_bytes(data, 6);
std::cout << "checksum = " << std::hex << result.checksum() << std::endl;
crc_32_type Sınıfı - 32 bit
Bu sınıf aslında bir type. Tanımı şöyle
typedef crc_optimal<32,0x04C11DB7,0xFFFFFFFF,0xFFFFFFFF, true, true> crc_32_type;
32 : sınıfın kaç bitlik çıktı vereceğini gösterir.
0x04C11DB7 : kullanılacak polinomu gösterir.
0xFFFFFFFF : işlemeye başlamadan önce ilk beslenecek değeri gösterir.
0xFFFFFFFF : işlem bittikten sonra beslenecek değeri gösterir.
true : beslenen byteların tersine çevrileceğini gösterir.
true : çıktı byteların tersine çevrileceğini gösterir.
Constructor
Şöyle yaparız.
boost::crc_32_type crc;
process metodu
Döngü içinde nesneye veri eklenir. Şöyle yaparız.
crc.process_bytes(&buffer[0], bytes_read);
checksum metodu
Daha sonra nesneden CRC alınır. Şöyle yaparız.
crc.checksum()
crc metodu
crc_32_type veya crc_itt_type yerine gelen crc metodu da kullanılabilir.
Constructor 
Şöyle yaparız.
boost::crc<16, 0x1040, 0, 0, false, false>(data, 4)
Şöyle yaparız.
unsigned char const  data[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
std::size_t const    data_len = sizeof(data) / sizeof(data[0]);

uint16_t checksum = boost::crc<16, 0x1021, 0xFFFF, 0, false, false>(data, data_len);

Hiç yorum yok:

Yorum Gönder