ciao a tutti, chi sa dire come faccio a convertire un indirizzo ip che mi viene passato come stringa, in indirizzo ip in binario?
del tipo 0.0.0.10 ---> 00000000.00000000.00000000.00001010 ?
grazie mille
ciao a tutti, chi sa dire come faccio a convertire un indirizzo ip che mi viene passato come stringa, in indirizzo ip in binario?
del tipo 0.0.0.10 ---> 00000000.00000000.00000000.00001010 ?
grazie mille
Devi prima di tutto convertire le singole componenti dell'IP in interi (puoi usare un istringstream), e quindi convertirle in binario (l'algoritmo è molto semplice, sono sicuro che ci puoi arrivare da solo).
Per inciso, a cosa ti serve la conversione in binario?
Amaro C++, il gusto pieno dell'undefined behavior.
Riallacciandomi a quello che ha detto MItaly, se ci sono problemi qua c'è un esempio in C++. Ma a cosa ti serve?
codice:#include <vector> #include <string> #include <algorithm> #include <sstream> std::vector <unsigned> IPtoBin( std::string &text ) { delDot( text ); return dectobin( stouint(text) ); } void delDot( std::string &text ) { std::string::size_type pos = text.find("."); while( pos != std::string::npos ) { std::string::const_iterator it = text.begin() + pos; text.erase( it ); pos = text.find("."); } } unsigned stouint( const std::string &text ) { std::stringstream sstream; sstream << text; unsigned uint; sstream >> uint; return uint; } std::vector <unsigned> dectobin( unsigned uint ) { typedef std::vector <unsigned>::size_type VectorSize; std::vector <unsigned> binary; for( VectorSize value = 1; value <= uint; value *= 2 ) binary.push_back(value); std::reverse( binary.begin(), binary.end() ); VectorSize myVectSize = binary.size(); for( VectorSize i = 0; i != myVectSize; ++i ) { unsigned temp = binary[ i ]; binary[ i ] = uint / binary[ i ]; uint = uint % temp; } return binary; }
Fracty - The Fractal Generator
If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.
grazie, mi serve per un progetto scolastico.... mi arriva un pacchetto, leggo l'indirizzo ip sotto forma di stringa e poi devo lavorare sui singoli bit.
Ho provato il codice ma mi dice unable to open include file 'sstream.h'
Provo ad utilizzare un altro programma, magai c++ primer e poi vi faccio sapere come va.
Se no ho trovato un codice che mi converte una stringa di numeri in binario,
ma il problema è che non riesco a dividere l'ip in 4 sottostringhe divise dal '.' ... C'è una funzione che divide la stringa che gli passo in base al carattere separatore? ho provato a cercare e ho trovato la funzione split, ma non sono riuscito ad implementarlacodice:#include <stdio.h> #define LEN_BINSTR_INT (sizeof (int)*8) //funzione che converte in binario passandogli un valore in decimale char *binstr_int (char *bufout, int value) { unsigned int m; char *ret = bufout; for (m=1<<(LEN_BINSTR_INT-1); m!=0; m>>=1) *bufout++ = value & m ? '1' : '0'; *bufout = '\0'; return ret; } int main (void) { char str[LEN_BINSTR_INT+1]; //il +1 serve per il /0 che è il terminatore della stringa printf ("%s\n", binstr_int (str, 255)); return 0; }
Che compilatore/IDE usi?
Ma lo devi fare in C o in C++?
Perchè anche se non sembra le cose possono cambiare decisamente...
Basandomi sul titolo della discussione ti posso dire che la classe std::string implementa metodi che possono esserti utili (se guardi il mio esempio, fatto proprio per avere una base "didattica", te ne renderai conto).
Guardati: string
Fracty - The Fractal Generator
If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.
La direttiva èOriginariamente inviato da 88prototipo
grazie, mi serve per un progetto scolastico.... mi arriva un pacchetto, leggo l'indirizzo ip sotto forma di stringa e poi devo lavorare sui singoli bit.
Ho provato il codice ma mi dice unable to open include file 'sstream.h'
, senza il .h (qualora ce l'avessi aggiunto tu).codice:#include <sstream>
Amaro C++, il gusto pieno dell'undefined behavior.
utilizzo Borland C++ 5.02 (è un po' vecchiotta come versione) e devo farlo in C++.
Per il problema sstream.h, io ho solo copiato il codice che mi ha postato GliderKite, senza alcuna modifica... Però mi ha dato questo problema
Installa qualcosa di più dignitoso e non avrai quel problema.Originariamente inviato da 88prototipo
utilizzo Borland C++ 5.02 (è un po' vecchiotta come versione) e devo farlo in C++.
every day above ground is a good one
era quello che usavo 6 anni fa
![]()
ora installo dev-C++
Dev-C++ è un progetto non più attivo, oltretutto personalmente non lo trovo proprio il massimo...Originariamente inviato da 88prototipo
era quello che usavo 6 anni fa
![]()
ora installo dev-C++
Se hai la possibilita ti consiglio: VS express edition (Visual C++)
Fracty - The Fractal Generator
If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.