Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
crc [2009/04/30 00:36] qboosh |
crc [2009/04/30 00:43] qboosh |
||
---|---|---|---|
Linia 20: | Linia 20: | ||
* **''Truncated polynominal''** - Skrócony wielomian dzielący. Skrócenie polega na opuszczeniu pierwszego bitu (odpowiadającemu współczynnikowi przed najwyższą potęgą wielomianu), ponieważ bit ten zawsze jest równy 1. W innym przypadku byłby to wielomian niższego rzędu niż zakładany. | * **''Truncated polynominal''** - Skrócony wielomian dzielący. Skrócenie polega na opuszczeniu pierwszego bitu (odpowiadającemu współczynnikowi przed najwyższą potęgą wielomianu), ponieważ bit ten zawsze jest równy 1. W innym przypadku byłby to wielomian niższego rzędu niż zakładany. | ||
- | * **''Initial remainder''** - początkowa wartość reszty z dzielenia - wprowadzona po to by uniknąć "ślepych punktów", czyli sytuacji w których dla pewnych szczególnych wiadomości, ich kod CRC będzie zaczynał się od samych zer. | + | * **''Initial remainder''** - początkowa wartość reszty z dzielenia - wprowadzona po to by uniknąć "ślepych punktów", czyli sytuacji w których dla pewnych szczególnych wiadomości, ich kod CRC będzie zaczynał się od samych zer. |
- | * **''Final XOR value''** - ciąg bitów z którymi wartość końcowa CRC jest XOR'owana. Zazwyczaj jest to ciąg samych zer lub samych jedynek. | + | * **''Final XOR value''** - ciąg bitów z którymi wartość końcowa CRC jest XOR'owana. Zazwyczaj jest to ciąg samych zer lub samych jedynek. |
- | * **''Reflected input''** - parametr typu boolean określający czy ciąg wejściowy ma być odwracany przed obliczeniem kodu nadmiarowego. | + | * **''Reflected input''** - parametr typu boolean określający czy ciąg wejściowy ma być odwracany przed obliczeniem kodu nadmiarowego. |
- | * **''Reflected output''** - parametr typu boolean określający czy ciąg wyjściowy (kod nadmiarowy) ma być odwrócony. Dla obu powyższych parametrów przez odwrócenie rozumiemy zamianę miejscami bitu pierwszego z ostatnim, drugiego z przedostatnim itd. | + | * **''Reflected output''** - parametr typu boolean określający czy ciąg wyjściowy (kod nadmiarowy) ma być odwrócony. Dla obu powyższych parametrów przez odwrócenie rozumiemy zamianę miejscami bitu pierwszego z ostatnim, drugiego z przedostatnim itd. |
Dostęp do parametrów jest umożliwiony przez odpowiednie metody "get". | Dostęp do parametrów jest umożliwiony przez odpowiednie metody "get". | ||
Linia 37: | Linia 37: | ||
Poniżej przykładowa definicja obiektu klasy podstawowej: | Poniżej przykładowa definicja obiektu klasy podstawowej: | ||
<code cpp> | <code cpp> | ||
+ | //Parametr szablonu - Rozmiar | ||
+ | //Parametry konstruktora - Truncated polynominal, Initial remainder, Final XOR value, Reflected input, Reflected output | ||
boost::crc_basic<8> crc_podstawowa( 0x25, 0x00, 0, false, false ); | boost::crc_basic<8> crc_podstawowa( 0x25, 0x00, 0, false, false ); | ||
</code> | </code> | ||
Linia 46: | Linia 48: | ||
Przykładowa definicja: | Przykładowa definicja: | ||
<code cpp> | <code cpp> | ||
+ | //Parametry szablonu: Rozmiar, Truncated polynominal, Initial remainder, Final XOR value, Reflected input, Reflected output | ||
boost::crc_optimal<8, 0x25, 0x00, 0, false, false> crc_optymalna; | boost::crc_optimal<8, 0x25, 0x00, 0, false, false> crc_optymalna; | ||
</code> | </code> | ||
Linia 51: | Linia 54: | ||
===== Operacje ===== | ===== Operacje ===== | ||
- | * **''void process_bit( bool bit );''** -> przetworzenie pojedynczego bitu (wyłącznie dla klasy Podstawowej) | + | * **''void process_bit( bool bit );''** -> przetworzenie pojedynczego bitu (wyłącznie dla klasy Podstawowej) |
- | * **''void process_bits( unsigned char bits, std::size_t bit_count );''** -> przetworzenie dowolnej ilości bitów (wyłącznie dla klasy podstawowej) | + | * **''void process_bits( unsigned char bits, std::size_t bit_count );''** -> przetworzenie dowolnej ilości bitów (wyłącznie dla klasy podstawowej) |
- | * **''void process_byte( unsigned char byte );''** -> przetworzenie pojedynczego bajtu | + | * **''void process_byte( unsigned char byte );''** -> przetworzenie pojedynczego bajtu |
- | * **''void process_block( void const *bytes_begin, void const *bytes_end );''** -> przetworzenie bloku bajtów (parametrami są początek i koniec) | + | * **''void process_block( void const *bytes_begin, void const *bytes_end );''** -> przetworzenie bloku bajtów (parametrami są początek i koniec) |
- | * **''void process_bytes( void const *buffer, std::size_t byte_count );''** -> przetworzenie dowolnej ilości bajtów | + | * **''void process_bytes( void const *buffer, std::size_t byte_count );''** -> przetworzenie dowolnej ilości bajtów |
- | * **''value_type checksum() const;''** -> zwrócenie aktualnej wartości reszty kodowej | + | * **''value_type checksum() const;''** -> zwrócenie aktualnej wartości reszty kodowej |
- | * **''void operator ()( unsigned char byte );''** -> przeciążony operator, woła process_byte (wyłącznie dla klasy optymalnej) | + | * **''void operator ()( unsigned char byte );''** -> przeciążony operator, woła process_byte (wyłącznie dla klasy optymalnej) |
- | * **''value_type operator ()() const;''** -> zwraca aktualną wartość reszty kodowej (wyłącznie dla klasy optymalnej) | + | * **''value_type operator ()() const;''** -> zwraca aktualną wartość reszty kodowej (wyłącznie dla klasy optymalnej) |
===== Kod z przykładowym wykorzystaniem ===== | ===== Kod z przykładowym wykorzystaniem ===== | ||
{{boostcrc.cpp}} | {{boostcrc.cpp}} |