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

Zamiania na system binarny

0 głosów
117 wizyt
pytanie zadane 10 września 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

+2 głosów
odpowiedź 10 września przez mtk3d Nałogowiec (30,160 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.
+2 głosów
odpowiedź 10 września przez Criss VIP (124,820 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 przez Hipcio Nałogowiec (46,180 p.)
edycja 10 września przez Hipcio

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 przez Criss VIP (124,820 p.)
O, jeszcze ładniej, super :)
komentarz 10 września przez Hipcio Nałogowiec (46,180 p.)
Chociaż właściwie to do adresów IP nie trzeba usuwać zer :D
komentarz 10 września przez Criss VIP (124,820 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 74 wizyt
pytanie zadane 13 września w C i C++ przez gabi_15 Początkujący (370 p.)
0 głosów
2 odpowiedzi 126 wizyt
0 głosów
1 odpowiedź 74 wizyt

42,388 zapytań

81,670 odpowiedzi

162,099 komentarzy

20,320 pasjonatów

Przeglądających: 352
Pasjonatów: 24 Gości: 328

Motyw:

Akcja Pajacyk

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

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

...