我正在尝试使用 Qt 创建一个 UDP 终端(自定义) - 有谁知道是否有一个小部件或类用于处理将 IP 地址从 ASCII 转换为数字(十六进制),还是我必须自己编写?基本上是“192.168.1.1”->“0xC0A80101”。我不反对写它,只是想知道是否有人知道它是否已经存在。尝试搜索,没有太多运气。谢谢大家
问问题
1517 次
2 回答
2
这里的关键类是QHostAddress,如下:
主文件
#include <QHostAddress>
#include <QTextStream>
#include <QString>
int main()
{
QTextStream standardOutput(stdout);
// You could use this, too:
// standardOutput.setIntegerBase(16);
// standardOutPut.setNumberFlags(QTextStream::ShowBase);
quint32 ipAddress = QHostAddress("192.168.1.1").toIPv4Address();
QString hexIpAddress = QString::number(ipAddress, 16);
QString prefixedUppercaseHexIpAddress = QString("0x%1")
.arg(uppercaseHexIpAddress);
standardOutput << prefixedUppercaseHexIpAddress;
return 0;
}
主程序
TEMPLATE = app
TARGET = main
QT = core network
SOURCES += main.cpp
构建并运行
qmake && make && ./main
输出
0xC0A80101
于 2014-01-14T20:46:55.973 回答
0
用于QHostAddress
解析字符串 IP 表示并将其转换为数字。用于QString::number
将数字转换为十六进制字符串。看到这个单行:
qDebug() << QString::number(QHostAddress("192.168.1.1").toIPv4Address(), 16);
输出:"c0a80101"
于 2014-01-14T20:38:28.810 回答