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

Zamiania na system binarny

VPS Starter Arubacloud
0 głosów
819 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,690 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,590 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,590 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,590 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 847 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ź 529 wizyt
pytanie zadane 12 marca 2018 w Rozwój zawodowy, nauka, praca przez WireNess Stary wyjadacz (11,240 p.)
0 głosów
2 odpowiedzi 721 wizyt
pytanie zadane 24 października 2019 w Matematyka, fizyka, logika przez RocketPl Nowicjusz (120 p.)

92,979 zapytań

141,941 odpowiedzi

321,185 komentarzy

62,304 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...