博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
位运算操作
阅读量:6411 次
发布时间:2019-06-23

本文共 1249 字,大约阅读时间需要 4 分钟。

  hot3.png

除了static_stream还有stream可以进行按位读写之外,TBOX还提供了更加原始、更加底层的位数据操作接口,例如直接对某个数据指针的位读取操作,可以使用utils库的tb_bits_get_xxx和tb_bits_set_xxx 系列接口, 这个更加的轻量:

// p指向某个数据地址tb_byte_t* p = data;// 按大端读取16位数据tb_uint16_t u16_be = tb_bits_get_u16_be(p);// 按小端读取24位数据tb_uint32_t u24_le = tb_bits_get_u24_le(p);// 按本地端读取32位数据tb_uint32_t u32_ne = tb_bits_get_u32_ne(p);// 按大端读取64位数据tb_uint64_t u64_be = tb_bits_get_u64_be(p);// 读取从第1位开始的后续5位无符号数据tb_uint32_t u5 = tb_bits_get_ubits32(p, 1, 5);// 按大端读取浮点值tb_float_t float_be = tb_bits_get_float_be(p);// 按浮点大端、字小端读取双精度浮点值tb_double_t double_ble = tb_bits_get_double_ble(p);// 按浮点本地端、字本地端读取双精度浮点值tb_double_t double_nne = tb_bits_get_double_nne(p);// 交换无符号16位数值u16 = tb_bits_swap_u16(u16);// 交换无符号32位数值u32 = tb_bits_swap_u32(u32);// 交换无符号64位数值u64 = tb_bits_swap_u64(u64);// 将本地端的u32数值转为大端u32数值u32_be = tb_bits_ne_to_be_u32(u32_ne);// 将小端的u64值转为大端u64数值u64_be = tb_bits_ne_to_be_u32(u64_le);// 按大端顺序获取u32的前导0的位数count = tb_bits_cl0_u32_be(val);// 按小端顺序获取u64的前导1的位数count = tb_bits_cl1_u64_le(val);// 按大端顺序获取u32的第一个位0的索引位置index = tb_bits_fl0_u32_be(val);// 按小端顺序获取u64的第一个位1的索引位置index = tb_bits_fl1_u64_le(val);// 获取u32的位0的总数count = tb_bits_cb0_u32(val);// 获取u63的位1的总数count = tb_bits_cb1_u64(val);

转载于:https://my.oschina.net/tboox/blog/308053

你可能感兴趣的文章
Windows下oracle打补丁步骤
查看>>
Python教程(一)Python简介
查看>>
asp.net forms认证
查看>>
Hadoop 公平调度器算法调度解析
查看>>
Linux Foundation(笔记)
查看>>
Java学习第二十五天
查看>>
vim配置
查看>>
ubuntu 把软件源修改为国内源和更新
查看>>
随机产生四则运算,导入导出文件
查看>>
位运算符
查看>>
winform自定义控件
查看>>
C#编码好习惯
查看>>
避其锋芒,侧翼出击。——司马亮创业回忆录(一)
查看>>
scope
查看>>
一起谈.NET技术,晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
查看>>
一起谈.NET技术,.Net Framework源代码中的模式之Prototype(原型模式)
查看>>
[shell 命令] find 查找文件
查看>>
windows下启动mysql服务的命令行启动和手动启动方法
查看>>
VTK三维点集轮廓凸包提取
查看>>
【概率论与数理统计】小结9-3 - 区间估计
查看>>