eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytm hex,dec<->liczba › Re: Algorytm hex,dec<->liczba
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
    From: Borneq <b...@a...hidden.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Algorytm hex,dec<->liczba
    Date: Tue, 4 Jul 2017 15:59:43 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 59
    Message-ID: <ojg70d$dm9$1@node2.news.atman.pl>
    References: <ojbd2k$m8a$1@node1.news.atman.pl>
    <1...@g...com>
    <ojg3pv$alr$1@node2.news.atman.pl>
    NNTP-Posting-Host: 91.239.205.105
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1499176781 14025 91.239.205.105 (4 Jul 2017 13:59:41
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Tue, 4 Jul 2017 13:59:41 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101
    Thunderbird/52.2.1
    In-Reply-To: <ojg3pv$alr$1@node2.news.atman.pl>
    Content-Language: pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:210640
    [ ukryj nagłówki ]

    W dniu 04.07.2017 o 15:05, Borneq pisze:
    > Tu znalazłem dobrze rozpisane:
    > http://www.cs.trincoll.edu/~ram/cpsc110/inclass/conv
    ersions.html
    > może się przydać

    Ostatecznie, trochę pozmieniałem kolejność w baseToNumber
    Gotowiec:
    #include <string>
    #include <boost/multiprecision/cpp_int.hpp>

    std::string numberToBase(boost::multiprecision::cpp_int n, int base)
    {
    const int max_buf = 128; //128 bit to binary
    char buf[max_buf+1];
    buf[max_buf] = 0;
    int pos = max_buf - 1;
    while (n != 0)
    {
    boost::multiprecision::cpp_int rb = n % base;
    int r = (int)rb;
    n = n / base;
    char letter;
    if (r < 10)
    letter = '0' + r;
    else
    letter = 'a' + (r - 10);
    buf[pos] = letter;
    pos--;
    }
    return buf + pos + 1;
    }

    boost::multiprecision::cpp_int baseToNumber(std::string str, int base)
    {
    boost::multiprecision::cpp_int n = 0;
    for (int i = 0; i< str.length(); i++)
    {
    char letter = tolower(str[i]);
    int r;
    if (letter >= '0' && letter <= '9')
    r = letter - '0';
    else
    r = letter - 'a' + 10;
    n = n * base + r;
    }
    return n;
    }

    int main()
    {
    std::string strnum = numberToBase(642452, 16);
    std::cout << strnum << std::endl;
    boost::multiprecision::cpp_int n = baseToNumber(strnum, 16);
    std::cout << n << std::endl;
    return 0;
    }



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: