• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiania na system binarny

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
261 wizyt
pytanie zadane 10 września 2017 w C i C++ przez gabi_15 Początkujący (370 p.)
Cześć,

Piszę program, który losuje liczbe, w tym przypadku adres IP, a na koniec ma zamienic wylosowany adres na system binarny. Jak zawrzeć w kodzie, aby program zamienil adres na system binarny? Jakiej funkcji użyć?

Z góry dziękuję za pomoc :)

2 odpowiedzi

+1 głos
odpowiedź 10 września 2017 przez mtk3d Nałogowiec (46,770 p.)
Musisz napisać taką funkcję. Poszukaj sobie jak zamieniec ręcznie liczbę dziesiętną na dwójkową i spróbuj napisać taki algorytm.
Będzie ci potrzebne dzielenie modulo.
+1 głos
odpowiedź 10 września 2017 przez criss Mędrzec (172,640 p.)

Możesz skorzystać z std::bitset:

const unsigned x = 42;
std::cout << std::bitset<8>{x};
// parametrem szablonu jest liczba bitów w bitsecie - tutaj dałem 8 bo każdy oktet ma 8 bitów

To jeśli chodzi o samo wyświetlanie. Stricte do konwersji (na stringa) możesz użyć dodatkowo std::stringstream:

std::stringstream ss;
ss << std::bitset<8>{x};
std::string str;
ss >> str;

Polecam jednak samodzielnie napisać funkcje konwertującą dec-bin, bo nie jest to trudne. Myślę, że wyjdzie też wydajniej niż powyższy sposób.

1
komentarz 10 września 2017 przez niezalogowany
edycja 10 września 2017

Można też zrobić tak:

int main()
{
	const unsigned x = 43;
	std::string str = std::bitset<8>(x).to_string();
	str = str.substr(str.find("1"));
	std::cout << str << "\n";
}

EDIT: Tylko trzeba uwzględnić, że w łańcuchu 1 może nie wystąpić ;)

int main()
{
	const unsigned x = 0;
	std::string str = std::bitset<8>(x).to_string();
	auto it = str.find("1");
	str = (it != std::string::npos ? str.substr(it) : "0");
	std::cout << str << "\n";
}
komentarz 10 września 2017 przez criss Mędrzec (172,640 p.)
O, jeszcze ładniej, super :)
komentarz 10 września 2017 przez niezalogowany
Chociaż właściwie to do adresów IP nie trzeba usuwać zer :D
komentarz 10 września 2017 przez criss Mędrzec (172,640 p.)
No w zasadzie to nawet lepiej wygląda z tymi zerami :D Też sobie teraz uświadomiłem.

Podobne pytania

0 głosów
2 odpowiedzi 288 wizyt
pytanie zadane 13 września 2017 w C i C++ przez gabi_15 Początkujący (370 p.)
0 głosów
1 odpowiedź 303 wizyt
0 głosów
2 odpowiedzi 283 wizyt
pytanie zadane 24 października 2019 w Matematyka, fizyka, logika przez RocketPl Nowicjusz (120 p.)

89,777 zapytań

138,385 odpowiedzi

309,501 komentarzy

59,681 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 1088p. - Argeento
  2. 1032p. - nidomika
  3. 1024p. - rucin93
  4. 1020p. - Michal Drewniak
  5. 1014p. - Łukasz Eckert
  6. 1006p. - Mikbac
  7. 988p. - TheLukaszNs
  8. 963p. - JMazurkiewicz
  9. 960p. - adrian17
  10. 945p. - Jarosław Roszyk
  11. 941p. - Hubert Chęciński
  12. 920p. - Mawrok
  13. 914p. - overcq
  14. 859p. - ssynowiec
  15. 848p. - Adam Salamon
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...