Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Zamiana pliku tekstowego i binarnego na szesnastkowy

Ostatnio zmodyfikowano 2013-11-24 15:56
Autor Wiadomość
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.
P-97110
pekfos
» 2013-11-23 14:08:56
Co to jest plik szesnastkowy?
P-97128
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.
P-97311
Mitu
» 2013-11-24 15:39:16
Może chodzi Ci o zamianę zapisanych w pliku tekstowym liczb z sytemu binarnego na szesnastkowy?
P-97313
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++.
C/C++
std::string ZamianaBinarnaNaSzesnastkowa( std::string binarna ) // Do referencji podaj liczbe binarna, zapisana jako STRING
{
    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:

C/C++
#include <fstream>
#include <iostream>
#include <string>
#include <cstdio>
#include <math.h>
#include <sstream>

std::string ZamianaBinarnaNaSzesnastkowa( std::string binarna ); /*Deklaracja funkcji, ciało będzie pod funkcją główną */

int main( void )
{
    std::string WczytanaBinarna;
    std::fstream plik;
   
    plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out ); /* Otwieramy plik */
   
    if( plik.good() == true ) /* jesli udalo sie otworzyc */
    {
        plik >> WczytanaBinarna; /* wczytujemy wyraz z pliku - w naszym przypadku liczbe */
        std::cout << ZamianaBinarnaNaSzesnastkowa( WczytanaBinarna ); /* wyswietlamy liczbe w systemie hex */
    }
   
}

std::string ZamianaBinarnaNaSzesnastkowa( std::string binarna ) // Do referencji podaj liczbe binarna, zapisana jako STRING
{
    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.
P-97317
« 1 »
  Strona 1 z 1