String* -> u_long



  • Hallo Leute......
    ich habe ein IP Address als String* oder als Byte[], und sie möchte ich als u_long (oder unsigend long) haben, aber ich kriege es nicht hin 😞

    IPAddress* IPList[] = siteIPHostEntry->AddressList;
    Object* o = IPList->Item[0];//in o ist meine IP 
    String* siteIP = o->ToString();//hier als String*, Console::WriteLine(siteIP);
    //oder auch folgendes
    
    Byte ip[] = IPList[0]->GetAddressBytes();//hier als Byte[]
    

    Hat Jemand eine Idee??
    Danke



  • Sieht aus wie Java? 😕 😕



  • Original erstellt von <blup>:
    Sieht aus wie Java? 😕 😕

    😡 ich arbeite mit Managed C++!

    😃



  • dann hat das hier nichts zu suchen 😡



  • Hi!

    Ich habe nicht verstanden was Du machen willst. Eine IP besteht doch aus mehreren Teilen.

    xxx.xxx.xxx.xxx

    Daraus willst Du eine einzige long machen ? Dann müsstest Du einfach die punkte aus den String filtern.

    Ansonsten müsstest Du 4 long machen (wobei long etwas übertrieben groß wäre).

    Beschreib bitte noch mal was Du machen möchtest.



  • ich arbeite mit Managed C++!

    Dann ist das ganze im VC-Forum wohl besser aufgehoben.

    Wie man in Standard-C++ ein String in eine Zahl wandelt, steht in den FAQs ausführlich erklärt:
    Einmal Zahl nach String und zurück



  • Original erstellt von Knuddlbaer:
    Ich habe nicht verstanden was Du machen willst.

    Hi,
    also, aus den oben gezeigten Methoden bekomme ich eine IPAdresse (in der Format x.x.x.x) als ein String* (bzw. Byte[]). Nun habe ich eine andere Funktion, die eine IPAdresse bekommt, aber als u_long. Wie kann ich jetzt aus String* ein u_long machen? es gibt übrigens eine Funktion

    u_long inet_addr(const char*)
    

    aber mit ihr kann ich nicht weiterkommen wegen char*.



  • Hm, String* sagt mir nichts und BYTE[] so direckt auch nichts.

    Schau mal ob Du mit

    inet_addr( static_cast<char *>(IPList->Item[0]) );

    weiterkommst.



  • Original erstellt von Knuddlbaer:
    **inet_addr( static_cast<char *>(IPList->Item[0]) );
    **

    das hat leider nicht geklappt:
    **error C2440: 'static_cast' : cannot convert from 'System::Object __gc *' to 'char *'
    **

    aber das finde ich komisch, weil ich ein Object* habe, und es muss einen Weg geben, um dieses Object* zu irgendwas anderes umwandlen zu können.



  • Gibts vllt. eine Methode des Objects die eine umwandlung erlaubt ? toString oder sowas in der art ?

    Mit was genau programmierst Du denn ?



  • Original erstellt von Knuddlbaer:
    **Gibts vllt. eine Methode des Objects die eine umwandlung erlaubt ? toString oder sowas in der art ?
    **

    Das ist genau was ich oben gemacht habe:

    String* siteIP = o->ToString();
    

    in diesem Object steckt die IP Adresse, und was ich habe ist ein String*, und deshalb finde ich keine Weise, aus diesem Pointer ein u_long zu machen



  • Probier mal ToCharArray ... da bekommst du allerdings alles als Unicode.


Anmelden zum Antworten