pekfos |
» 2017-06-08 01:44:49 Rzutowanie chyba nie wystarczy, gdy tak bezmyślnie podstawiłeś zupełnie inne typy i o dziwo nie działa. Był przykładowy kod w tym temacie, jak przejść po stringu i była moja rada, żeby nie traktować danych na siłę jako tekstu, co jak na razie sprawia ci same problemy. |
|
1551 Temat założony przez niniejszego użytkownika |
» 2017-06-08 01:47:24 Ale jestem mało doświadczony w tym temacie. Niestety nie jestem biegły w programowaniu, a muszę to zrobić na dzisiaj. Wszystko już mam napisane, jedyne co zostało to wykorzystać tę funkcję na stringach - i tutaj się zaciąłem i nie mogę ruszyć. |
|
pekfos |
» 2017-06-08 02:40:14 crc32 =( crc32 >> 8 ) ^ tablica[( crc32 & 255 ) ^* tekst++ ]; Oznaczona wartość to znak wprowadzany do crc. Reszta już została podana. |
|
1551 Temat założony przez niniejszego użytkownika |
» 2017-06-08 03:08:50 Dziękuję, ale zrobiłem już ze zamianą wprowadzanego stringa na const char*. Jeszcze jak byś mógł mi pomóc. Uzyskałem wynik CRC32 w stringu zapisany w postaci hexadecymalnej. W jaki sposób mogę zapisać ten wynik do pliku w postaci dziesiętnej oraz binarnej ? |
|
pekfos |
» 2017-06-08 03:22:38 Uzyskałeś wynik w postaci liczby. Żeby ją wypisać dziesiętnie, nie musisz nic specjalnego z nią robić. A binarnie - może przyjrzyj się, skąd masz tego stringa z postacią szesnastkową..? |
|
1551 Temat założony przez niniejszego użytkownika |
» 2017-06-08 03:23:59 Jak mogę zamienić zmienną : string x="f83debb7" na stringa z postacią decymalną ? Nie muszę go nigdzie przetrzymywać w innej zmiennej - wystarczy wyświetlenie. |
|
pekfos |
» 2017-06-08 03:29:00 Jeśli musisz, możesz wczytać to do zmiennej liczbowej, np takim strtoul(). |
|
1551 Temat założony przez niniejszego użytkownika |
» 2017-06-08 08:32:15 Mam już całość, działa poprawnie tylko prosiłbym o wyjaśnienie mi jak działają te funkcje dokładnie. Są to funkcje ze stacka, przerabiałem je pod swoi program i ne do końca wiem jak działają. Mógłby mi ktoś łopatologicznie je opisać ? unsigned long change_bits( unsigned long value, char l_bits ) { unsigned long result = 0; for( int i = 1; i <( l_bits + 1 ); i++ ) { if( value & 1 ) result |= 1 <<( l_bits - i ); value >>= 1; } return result; }
void newarray() { for( int i = 0; i < 256; i++ ) { arr[ i ] = change_bits( i, 8 ) << 24; for( int j = 0; j < 8; j++ ) { if(( arr[ i ] &( 1 << 31 ) ) != 0 ) arr[ i ] =( arr[ i ] << 1 ) ^ P; else arr[ i ] =( arr[ i ] << 1 ); } arr[ i ] = change_bits( arr[ i ], 32 ); } return; }
unsigned int CRC( string txt ) { unsigned long crc32 = 0xffffffff; unsigned int result; char code[ 20 ]; int length; const char * text = txt.c_str(); length = strlen( text ); while( length-- ) crc32 =( crc32 >> 8 ) ^ arr[( crc32 & 255 ) ^* text++ ]; result = crc32 ^ 0xffffffff; string ret = itoa( result, code, 16 ); cout << "\n\n\n Tekst wejsciowy: " << txt; cout << "\n Suma CRC32: " << code; cout << "\n DEC : " << result; return result; }
Np. Tworzenie tablicy z kodami ASCII, po co tam s ale przesunięcia bitowe oraz w samej funkcji CRCw jaki sposób jest to wylizane ? |
|
1 2 « 3 » 4 |