【问题标题】:How to convert quint / qint to regular int (QT)如何将 quint / qint 转换为常规 int (QT)
【发布时间】:2020-07-15 17:10:08
【问题描述】:

在我的程序中,一个 Udp 发件人,我正在使用 QT,并且必须将 QT 类型的 quint64 转换为常规的 int

QUdpSocket::writeDatagram 方法返回quint64 类型中发送的字节数。 在我的程序中,一次发送的字节数永远不会超过 1024 个,因此在转换为常规 int 时,数字的大小不会有问题 - 我需要进一步处理它。

我可以使用什么方法或函数将此 quint64 整数转换为常规 c++“int”整数?

我发现的唯一内容是“QDataStream Class”文档(似乎不包含此类内容)和这个问题:How to nicely "cast" qint64 to int for QProgressBar,但它没有包含解决方案。

【问题讨论】:

    标签: c++ qt casting type-conversion int


    【解决方案1】:

    quint64 只是long long int 的别名(Windows 上为__int64)。如果您知道该值适合该范围,那么您可以简单地编写:

    quint64 x = 42;
    int y = x;
    

    但是,明确的更好:

    quint64 x = 42;
    int y = static_cast<int>(x);
    

    【讨论】:

    • 确实有效!谢谢!我以为我试过了,但可能把别的东西搞砸了……
    • 还有一个问题:static_cast&lt;int&gt;() 什么更好——除了可读性明显?
    • 可读性和可读性,不要忘记可读性,最后但并非最不重要的是,如果您尝试执行不允许的转换,编译器会告诉您(但与 (int)x 转换相比,这是一个优势,因为对于不兼容的类型T x = y; 也会失败)。真的,可读性的理由还不够吗? ;)
    • 完全是这样,这就是为什么我的代码是“现在返回 static_cast(bytesSend),但是如果还有更多我现在喜欢 ^^
    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2016-08-14
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多