QT快速使用ntohs,需要注意3点:
1. ntohs只是转换相邻的2个字节
2. 引入头文件#include <windows.h>
3. 需要加上win32{LIBS+=-lws2_32}

下面是一个简单的小例子:
#include <QtGui/QApplication>
#include <QDebug>
#include <windows.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    qDebug("unsigned int: %d", sizeof(unsigned int));
    qDebug("unsigned int: %d", sizeof(unsigned short));

    unsigned int uia = 4;
    unsigned short usa = 4;
    unsigned int uib = 1024;
    unsigned short usb = 1024;

    qDebug("00000000 00000000 00000100 00000000(1024)-->(4)00000000 00000000 00000000 00000100: %d",ntohs(uib));
    qDebug("00000000 00000000 00000000 00000100(4)-->(1024)00000000 00000000 00000100 00000000: %d",ntohs(uia));

    qDebug("00000100 00000000(1024)-->(4)00000000 00000100: %d",ntohs(usb));
    qDebug("00000000 00000100(4)-->(1024)00000100 00000000: %d",ntohs(usa));

    return a.exec();
}

可以看出,尽管int是32位的,但实际上只是2个字节之间的交换。
posted on 2014-02-08 14:07  UnMovedMover  阅读(907)  评论(0编辑  收藏  举报