Ziko Temat założony przez niniejszego użytkownika |
konwersja binarnego na liczbe » 2016-01-05 14:12:50 Witam serdecznie, Czy mógł by mi ktoś wytłumaczyć w jaki sposób mogę prze konwertować binarny na liczby? Dokładniej chodzi mi o odczyt pliku txt zawierającego zapis binarny np. (010101110101010101001111101011), następnie pobranie z tego pliku ciągu 5 znaków, prze konwertować i tak po kolei aż do szczytania wszystkich znaków z pliku. Mam tu taki mały kod: #include <iostream> int main() { char str[] = "00101"; int number = 0; for( int i = 0; i <( sizeof( str ) - 1 ); ++i ) { number =( number << 1 ) |( str[ i ] != '0' ); } std::cout << "string is " << str << " number is " << number << std::endl; system( "pause" ); return 0; }
Nie wiem jak to dokładnie zrobić, czy najpierw mam otworzyć plik, zawartość odczytywać jakąś pętlą a następnie rzucić do tablicy aby zamieniło na liczbę? [/i] |
|
mateczek |
» 2016-01-06 09:01:45 #include <iostream> #include<string> using namespace std;
int main() { string s = "0011"; int i = stoi( s, NULL, 2 ); cout << i << endl; } co do czytania z pliku to przydał by się fragment !!! jaki to plik, jak ma rozdzielone poszczególne liczby ?? czy spacje czy enter |
|
Ziko Temat założony przez niniejszego użytkownika |
» 2016-01-06 13:26:37 Otwieram plik plik.txt, wczytuje całą jego zawartość i tą zawartość i chciał bym go przekonwertować na ciąg liczb. Zawartość pliku txt to ciąg trzydziestu zer i jedynek. Przykładowo w pliku jest ciąg 010110101110000100001000010000 11 to 01011 16 to 10000 a na wyjściu chciałbym uzyskać wynik 11 11 16 16 16 16 czyli program miał by pobierać po 5 liczb np (01011) a następnie wynik w postaci 11 #include <iostream> #include <fstream> #include <conio.h> #include <string> using namespace std;
int main() { string line; ifstream myfile( "plik.txt", ios::in | ios::binary ); if( myfile.is_open() ) { while( getline( myfile, line ) ) { } myfile.close(); } return 0; }
Gdy prubuje skompilować wyskakuje błąd Error 'stoi' was not declared in this scope #include <iostream> #include <fstream> #include <conio.h> #include <string> #include <iostream> using namespace std;
int main() { string line; ifstream myfile( "plik.txt", ios::in | ios::binary ); if( myfile.is_open() ) { while( getline( myfile, line ) ) { string line; int i = stoi( line, NULL, 2 ); cout << i << endl; } myfile.close(); } return 0; }
|
|
mateczek |
» 2016-01-06 15:05:42 stoi to funkcja zamieniająca napis na liczbę !!! http://www.cplusplus.com/reference/string/stoi/ Stoi = stringToInteger !!! (jak chcesz może napisać własną) włącz c++11!!!!! #include <iostream> #include<string> using namespace std;
int main() { string s { "010101110101010101001111101011" }; string fragment = ""; for( char znak: s ) { fragment += znak; if( fragment.size() == 5 ) { cout << stoi( fragment, NULL, 2 ) << endl; fragment.clear(); } } } |
|
Ziko Temat założony przez niniejszego użytkownika |
» 2016-01-06 16:06:57 Przede wszystkim dziękuje za zainteresowanie się tematem oraz pomoc. Faktycznie kompilator wypisał ostrzeżenie o c++11 Wiem że to jest dziwne pytanie ale jak mam włączyć c++11 ? Szukałem w opcjach i nic nie znalazłem. Używam Dev-C++ 5.11 Nie jestem pewien czy to jest dobry kompilator, kiedyś wyczytałem że najlepszy jest Code::Blocks ale trudno mi to powiedzieć zważywszy na moje małe doświadczenie.
|
|
mateczek |
» 2016-01-06 16:09:35 http://www.cplusplus.com/doc/tutorial/introduction/devcpp///edit!!! dev-cpp to nie jest kompilator!! Dev-c++ to "IDE" - środowisko developerskie (można śmiało powiedzieć, że jest to ciut lepszy notatnik. Z kilkoma przydatnymi opcjami :P!!!) Kompilator to zewnętrzna aplikacja (choć często do pobrania występuje w paczce z IDE). Ty pewnikiem korzystasz z kompilatora min-gw (jest to port GCC na Windows). ja z racji tego, że bawię się trochę w okienka (windows/Linux) wybrałem sobie Qt-Creator jako IDE!!! A jako kompilator pod Windows mam min-gw (tak samo jak Ty)!!! |
|
Pawlo3 |
» 2016-01-06 16:09:55 Dev C++ to dziadostwo. Nawet tabulacja tam nie działa! Zainstaluj wxDevC++, jest ze 100 razy lepszy! |
|
Ziko Temat założony przez niniejszego użytkownika |
» 2016-01-06 17:46:20 Dziękuje bardzo, przeinstalowałem kompilator, teraz wszystko śmiga jak trzeba. Poza faktem że nie otwiera mi starych cpp ale do tego zaraz jakoś dojde. Ok już działają, wystarczyło zresetować system :) Teraz pozostaje mi tylko otworzyć plik i wyciągnąć dane :)
Jeszcze raz dzięki wielkie mataczek. |
|
« 1 » |