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

 

目录

1 qFromBigEndian

2 qFromLittleEndian


1 qFromBigEndian

T qFromBigEndian(T src)

这是一个重载函数

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

内部实现

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

template &lt;&gt; inline Q_DECL_CONSTEXPR qint64 qbswap<qint64&gt;(qint64 source)
{
    return qbswap<quint64&gt;(quint64(source));
}

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

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

template <> inline Q_DECL_CONSTEXPR qint8 qbswap<qint8>(qint8 source)
{
    return source;
}
//qbswap 重载
template <typename T> 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>(quint64 source)
{
    return 0
        | ((source &amp; Q_UINT64_C(0x00000000000000ff)) << 56)
        | ((source &amp; Q_UINT64_C(0x000000000000ff00)) << 40)
        | ((source &amp; Q_UINT64_C(0x0000000000ff0000)) << 24)
        | ((source &amp; Q_UINT64_C(0x00000000ff000000)) << 8)
        | ((source &amp; Q_UINT64_C(0x000000ff00000000)) >> 8)
        | ((source &amp; Q_UINT64_C(0x0000ff0000000000)) >> 24)
        | ((source &amp; Q_UINT64_C(0x00ff000000000000)) >> 40)
        | ((source &amp; Q_UINT64_C(0xff00000000000000)) >> 56);
}

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

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

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

2 qFromLittleEndian

T qFromLittleEndian(T src)

这是一个重载函数

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

内部实现

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

原文地址:https://blog.csdn.net/weixin_44270564/article/details/134705864

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41442.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注