当前位置: 首页 > article >正文

Qt 大小端转换函数qFromBigEndian qFromLittleEndian

 

目录

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 <> 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

T qFromLittleEndian(T src)

这是一个重载函数。

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

内部实现

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


http://www.kler.cn/a/158735.html

相关文章:

  • 论文阅读(七):贝叶斯因果表型网络解释遗传变异和生物学知识
  • Chrome浏览器编译系统研究与优化分析
  • 实战技巧:如何快速提高网站的收录比例?
  • < OS 有关> BaiduPCS-Go 程序的 菜单脚本 Script: BaiduPCS-Go.Menu.sh (bdgo.sh)
  • 前端-Rollup
  • Redis学习之哨兵二
  • 【亲测有效,超详细】收到微信小程序限期完成微信认证通知怎么处理?微信小程序年审认证都需要哪些资料?
  • Flink之复杂事件处理CEP
  • Linux下安装Nginx
  • 前端开发新趋势:Web3、区块链与虚拟现实
  • 解决:ModuleNotFoundError: No module named ‘qt_material‘
  • C++进阶篇7---异常
  • Unity中动态合批
  • SpringBoot+vue显示图片
  • CPP-SCNUOJ-Problem P24. [算法课贪心] 跳跃游戏
  • 鱼香ROS一键安装命令(支持微信、docker、ros等)
  • SpringSecurity6 | 默认用户生成
  • 2023年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题(四)
  • GNN Maximum Flow Problem (From Shusen Wang)
  • 7+WGCNA+机器学习+实验+泛癌分析,多要素干湿结合
  • TCP 半连接队列和全连接队列
  • 区分(GIOU、DIOU、CIOU)(正则化、归一化、标准化)
  • 【小白推荐】安装OpenCV4.8 系统 Ubuntu 22.04LST Linux.
  • 第17章 匿名函数
  • 【PTA题目】6-1 猴子吃桃-递归 分数 10
  • 6.5 Windows驱动开发:内核枚举PspCidTable句柄表