Qt 大小端转换函数qFromBigEndian qFromLittleEndian

 

目录

1 qFromBigEndian

2 qFromLittleEndian


1 qFromBigEndian

T qFromBigEndian(T src)

这是一个重载函数。

从大端字节顺序转换src并返回该数字的主机字节顺序表示形式。在主机字节顺序为小端序的CPU架构上(例如x86),这将返回字节顺序交换的src;否则它将返回未修改的SRC。

内部实现

template  inline Q_DECL_CONSTEXPR T qFromBigEndian(T source)
{ return qbswap(source); }
//qbswap

template <> inline Q_DECL_CONSTEXPR qint64 qbswap(qint64 source)
{
    return qbswap(quint64(source));
}

template <> inline Q_DECL_CONSTEXPR qint32 qbswap(qint32 source)
{
    return qbswap(quint32(source));
}

template <> inline Q_DECL_CONSTEXPR qint16 qbswap(qint16 source)
{
    return qbswap(quint16(source));
}

template <> inline Q_DECL_CONSTEXPR qint8 qbswap(qint8 source)
{
    return source;
}
//qbswap 重载
template  Q_DECL_CONSTEXPR T qbswap(T source);

// These definitions are written so that they are recognized by most compilers
// as bswap and replaced with single instruction builtins if available.
template <> inline Q_DECL_CONSTEXPR quint64 qbswap(quint64 source)
{
    return 0
        | ((source & Q_UINT64_C(0x00000000000000ff)) << 56)
        | ((source & Q_UINT64_C(0x000000000000ff00)) << 40)
        | ((source & Q_UINT64_C(0x0000000000ff0000)) << 24)
        | ((source & Q_UINT64_C(0x00000000ff000000)) << 8)
        | ((source & Q_UINT64_C(0x000000ff00000000)) >> 8)
        | ((source & Q_UINT64_C(0x0000ff0000000000)) >> 24)
        | ((source & Q_UINT64_C(0x00ff000000000000)) >> 40)
        | ((source & Q_UINT64_C(0xff00000000000000)) >> 56);
}

template <> inline Q_DECL_CONSTEXPR quint32 qbswap(quint32 source)
{
    return 0
        | ((source & 0x000000ff) << 24)
        | ((source & 0x0000ff00) << 8)
        | ((source & 0x00ff0000) >> 8)
        | ((source & 0xff000000) >> 24);
}

template <> inline Q_DECL_CONSTEXPR quint16 qbswap(quint16 source)
{
    return quint16( 0
                    | ((source & 0x00ff) << 8)
                    | ((source & 0xff00) >> 8) );
}

template <> inline Q_DECL_CONSTEXPR quint8 qbswap(quint8 source)
{
    return source;
}

2 qFromLittleEndian

T qFromLittleEndian(T src)

这是一个重载函数。

从小字节顺序转换src,并返回该数字的主机字节顺序表示形式。在主机字节顺序为大端序的CPU架构上(例如PowerPC),这将返回字节顺序交换的src;否则它将返回未修改的SRC。

内部实现

template  inline Q_DECL_CONSTEXPR T qFromLittleEndian(T source)
{ return source; }

你可能感兴趣的:(QT,Qt源码学习,qt)