[C] Zamiana pliku tekstowego i binarnego na szesnastkowy
Ostatnio zmodyfikowano 2013-11-24 15:56
szaroket Temat założony przez niniejszego użytkownika |
[C] Zamiana pliku tekstowego i binarnego na szesnastkowy » 2013-11-23 11:42:23 Tak jak w temacie - mam program, w którym muszę zamienić plik tekstowy i binarny na szesnastkowy. Czy ktoś by mi mógł podpowiedzieć, jak to zrobić? Byłabym wdzięczna za pomoc. |
|
pekfos |
» 2013-11-23 14:08:56 Co to jest plik szesnastkowy? |
|
szaroket Temat założony przez niniejszego użytkownika |
» 2013-11-24 15:32:58 Nie mam pojęcia. Po raz pierwszy się z czymś takim spotykam. |
|
Mitu |
» 2013-11-24 15:39:16 Może chodzi Ci o zamianę zapisanych w pliku tekstowym liczb z sytemu binarnego na szesnastkowy? |
|
Buby |
» 2013-11-24 15:56:27 Tutaj masz funkcje, która zamienia system liczb z binarnego na szesnastkowy. Pisane jakiś czas temu przeze mnie, na informatyce - jakoś wysyłanie maila to niezbyt ambitna sprawa, więc postanowiłem zrobić coś pożytecznego. Uwaga, ten kod działa tylko w C++. std::string ZamianaBinarnaNaSzesnastkowa( std::string binarna ) { double wynik; int wynik2; int reszta; std::string szesnastkowa; std::string odwrocony; std::string odwrocony1; std::stringstream ss; size_t size = binarna.size(); for( size_t i = 0; i < size; ++i ) { odwrocony = binarna[ size - i - 1 ]; if( odwrocony == "1" ) { wynik += pow( 2, i ); } else { wynik += 0; } } wynik2 = wynik; while( wynik2 != 0 ) { reszta = wynik2 % 16; wynik2 = wynik2 / 16; if( reszta == 1 ) { szesnastkowa += "1"; } if( reszta == 2 ) { szesnastkowa += "2"; } if( reszta == 3 ) { szesnastkowa += "3"; } if( reszta == 4 ) { szesnastkowa += "4"; } if( reszta == 5 ) { szesnastkowa += "5"; } if( reszta == 6 ) { szesnastkowa += "6"; } if( reszta == 7 ) { szesnastkowa += "7"; } if( reszta == 8 ) { szesnastkowa += "8"; } if( reszta == 9 ) { szesnastkowa += "9"; } if( reszta == 10 ) { szesnastkowa += "A"; } if( reszta == 11 ) { szesnastkowa += "B"; } if( reszta == 12 ) { szesnastkowa += "C"; } if( reszta == 13 ) { szesnastkowa += "D"; } if( reszta == 14 ) { szesnastkowa += "E"; } if( reszta == 15 ) { szesnastkowa += "F"; } } size_t size1 = szesnastkowa.size(); for( size_t i = 0; i < size1; ++i ) { odwrocony1 += szesnastkowa[ size1 - i - 1 ]; } return odwrocony1; } Kod główny twojego programu mógłby wyglądać następująco:#include <fstream> #include <iostream> #include <string> #include <cstdio> #include <math.h> #include <sstream>
std::string ZamianaBinarnaNaSzesnastkowa( std::string binarna );
int main( void ) { std::string WczytanaBinarna; std::fstream plik; plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out ); if( plik.good() == true ) { plik >> WczytanaBinarna; std::cout << ZamianaBinarnaNaSzesnastkowa( WczytanaBinarna ); } }
std::string ZamianaBinarnaNaSzesnastkowa( std::string binarna ) { double wynik; int wynik2; int reszta; std::string szesnastkowa; std::string odwrocony; std::string odwrocony1; std::stringstream ss; size_t size = binarna.size(); for( size_t i = 0; i < size; ++i ) { odwrocony = binarna[ size - i - 1 ]; if( odwrocony == "1" ) { wynik += pow( 2, i ); } else { wynik += 0; } } wynik2 = wynik; while( wynik2 != 0 ) { reszta = wynik2 % 16; wynik2 = wynik2 / 16; if( reszta == 1 ) { szesnastkowa += "1"; } if( reszta == 2 ) { szesnastkowa += "2"; } if( reszta == 3 ) { szesnastkowa += "3"; } if( reszta == 4 ) { szesnastkowa += "4"; } if( reszta == 5 ) { szesnastkowa += "5"; } if( reszta == 6 ) { szesnastkowa += "6"; } if( reszta == 7 ) { szesnastkowa += "7"; } if( reszta == 8 ) { szesnastkowa += "8"; } if( reszta == 9 ) { szesnastkowa += "9"; } if( reszta == 10 ) { szesnastkowa += "A"; } if( reszta == 11 ) { szesnastkowa += "B"; } if( reszta == 12 ) { szesnastkowa += "C"; } if( reszta == 13 ) { szesnastkowa += "D"; } if( reszta == 14 ) { szesnastkowa += "E"; } if( reszta == 15 ) { szesnastkowa += "F"; } } size_t size1 = szesnastkowa.size(); for( size_t i = 0; i < size1; ++i ) { odwrocony1 += szesnastkowa[ size1 - i - 1 ]; } return odwrocony1; } Mój kod zamienia całkowicie liczbę pomiędzy systemami. Jednak jeśli chcesz tylko zmienić wyświetlenie, to użyj std::cout.flags( std::ios::hex ) . Zamieni to wyświetlane liczby na szesnastkowe. |
|
« 1 » |