通过Qt套接字发送64位整数
Send 64-bit integer over Qt Socket
我似乎不知道如何通过QSslSocket按网络字节顺序发送一个quint64。我今天搜索了很多,开始让我头疼了。
quint64 m_ack;
QSslSocket m_socket;
我正在使用"qToBigEndian"将其按网络字节顺序排列。
quint64 ack_be = qToBigEndian(m_ack);
现在,我尝试了几种方法来将该数字写入套接字,但它们都是segfault。
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 ack,这只是我正在使用的协议的一部分。
谢谢。
您可以使用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());
结果:"array sent:00000000000000FF"
相关文章:
- 在 c++ 中输出 64 位整数
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 在 64 位整数内旋转(90°)位矩阵(最多 8x8 位)
- 如何通过COM接口将64位整数从C++发送到C#
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 将 64 位整数中的每个其他位与 32 位整数进行比较
- 按段比较 64 位整数
- 64 位整数和更早的 C++ 编译器
- 64 位整数到双精度冲突
- 我们是否需要担心 32 位或 64 位整数,或者我们只使用 'int'
- 读取 64 位整数二进制文件
- 将 n 位从 8 位数组复制到 64 位整数?
- 每个值64位整数的数字应转换为位等效的64位浮数
- 将设置位移动到 64 位整数的末尾
- C 中64位整数的奇怪行为
- 在C++中实现 CTR 加密模式时,CTR 加上 64 位整数
- 通过GNU扩展asm约束加载64位整数常量
- 读取 64 位整数文件
- 编译器警告(CodeBlocks/wxwidget):您的编译器似乎不支持64位整数,而是使用仿真类
- 如何从64位整数获得更高的20位