本文介绍: 从小字节顺序转换src,并返回该数字的主机字节顺序表示形式。在主机字节顺序为大端序的CPU架构上(例如PowerPC),这将返回字节顺序交换的src;否则它将返回未修改的SRC。从大端字节顺序转换src并返回该数字的主机字节顺序表示形式。在主机字节顺序为小端序的CPU架构上(例如x86),这将返回字节顺序交换的src;否则它将返回未修改的SRC。
1 qFromBigEndian
从大端字节顺序转换src并返回该数字的主机字节顺序表示形式。在主机字节顺序为小端序的CPU架构上(例如x86),这将返回字节顺序交换的src;否则它将返回未修改的SRC。
template <typename T> inline Q_DECL_CONSTEXPR T qFromBigEndian(T source)
{ return qbswap(source); }
//qbswap
template <> inline Q_DECL_CONSTEXPR qint64 qbswap<qint64>(qint64 source)
{
return qbswap<quint64>(quint64(source));
}
template <> inline Q_DECL_CONSTEXPR qint32 qbswap<qint32>(qint32 source)
{
return qbswap<quint32>(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 & 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>(quint32 source)
{
return 0
| ((source & 0x000000ff) << 24)
| ((source & 0x0000ff00) << 8)
| ((source & 0x00ff0000) >> 8)
| ((source & 0xff000000) >> 24);
}
template <> inline Q_DECL_CONSTEXPR quint16 qbswap<quint16>(quint16 source)
{
return quint16( 0
| ((source & 0x00ff) << 8)
| ((source & 0xff00) >> 8) );
}
template <> inline Q_DECL_CONSTEXPR quint8 qbswap<quint8>(quint8 source)
{
return source;
}
2 qFromLittleEndian
从小字节顺序转换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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。