IP Address conversion from string to unsigned int
-
wrote on 3 Mar 2012, 16:02 last edited by
I have a QString where the user provides an IP address like "192.168.0.128" and I need to convert this to the corresponding 32-bit unsigned int value (0xC0A80080). Is there a recommended way to do this?
Of course, I could come up with my own method to parse the string and do the conversion, but I'm sure there are many applications that do this already - I don't want to reinvent it if Qt already provides something like this.
Thanks for any guidance you can provide.
-
wrote on 3 Mar 2012, 17:45 last edited by
Use "QHostAddress::toIPv4Address":https://qt-project.org/doc/qt-4.8/qhostaddress.html#toIPv4Address
-
wrote on 3 Mar 2012, 18:07 last edited by
I did try using QHostAddress, but had problems with unresolved externals, couldn't find the methods in QHostAddress - ???
Anyway, here is an alternative approach:
I have a QString called Server_IP containing something like "192.168.0.128". The code below converts this to a 32-bit value (serverIPnum):
@
QStringList server_octets = Server_IP.split(".");
s1 = server_octets.at(0).toLong();
s2 = server_octets.at(1).toLong();
s3 = server_octets.at(2).toLong();
s4 = server_octets.at(3).toLong();
serverIPnum = (s1 << 24) | (s2 << 16) | (s3 << 8) | s4;
@
Maybe not very elegant, but it works. -
wrote on 3 Mar 2012, 18:11 last edited by
Have you added QtNetwork module to your project? Probably not and that's why you had unresolved external errors.
-
wrote on 3 Mar 2012, 18:47 last edited by
d2uriel is probably right that you did not include QNetwork module.
Please use "code wrappings":http://qt-project.org/wiki/ForumHelp#e3f82045ad0f480d3fb9e0ac2d58fb01 next time. I have added them for you.
-
wrote on 3 Mar 2012, 19:40 last edited by
I had included QtNetwork, still had the unresolved externals. Not really an issue anymore since I am using my alternative approach.
-
wrote on 4 Mar 2012, 08:12 last edited by
You added that to the .PRO file and ran QMake afterwards?
Anyways, as you say, case is closed.
6/7