1

我正在尝试使用 Qt 创建一个 UDP 终端(自定义) - 有谁知道是否有一个小部件或类用于处理将 IP 地址从 ASCII 转换为数字(十六进制),还是我必须自己编写?基本上是“192.168.1.1”->“0xC0A80101”。我不反对写它,只是想知道是否有人知道它是否已经存在。尝试搜索,没有太多运气。谢谢大家

4

2 回答 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 回答