gpt4 book ai didi

c++ - 通过 Qt Socket 发送 64 位整数

转载 作者:行者123 更新时间:2023-11-30 02:43:38 28 4
gpt4 key购买 nike

我似乎无法弄清楚如何通过 QSslSocket 以网络字节顺序发送 quint64。我今天做了很多搜索,开始让我头疼。

quint64    m_ack;
QSslSocket m_socket;

我正在使用“qToBigEndian”使其进入网络字节顺序。

quint64 ack_be = qToBigEndian(m_ack);

现在我已经尝试了几种方法来将该数字写入套接字,但它们都是段错误。

m_socket.write((const char*)(ack_be), sizeof(quint64));
m_socket.write(reinterpret_cast<const char*>(ack_be), sizeof(quint64));

我宁愿使用 std::uint64_t 而不是 quint64,但是 qToBigEndian 失败了:

test.cpp:(.text.startup+0xa): undefined reference to `unsigned long qbswap<unsigned long>(unsigned long)'

作为引用,quint64 似乎是“long long unsigned int”

我正在使用启用了 c++11 支持的 Qt5。另外请注意,这不是我返回 TCP 确认,这只是我正在与之交互的协议(protocol)的一部分。

谢谢。

最佳答案

您可以使用 QDataStream 将 qint64 或 quint64 转换为 QByteArray。 (如 Qt 示例中所述)

QByteArray array;
qint64 m_ack = 255;
QDataStream stream(&array, QIODevice::WriteOnly);
stream << m_ack;

要确定您发送的内容,请显示您的数据:

qDebug() << "array sent:" << QString(array.toHex());

结果:“发送的数组:00000000000000FF”

关于c++ - 通过 Qt Socket 发送 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25948786/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com