将数据的指定位置置位
将数据的指定位置置位
- 引言
- 实现过程
- 如何实现数组形式的数据的置位
- 函数的封装
- 扩展
- 结语
引言
在C语言的编程下,我们会经常遇到将数据的某一位置为0或者1的情况,在常用数据(char、int、long)的情况下比较简单,按位与或者按位或就可以进行将某位置1与置0了。但是如果数据是128位的或者256位的,例如:unsigned char[32],在这样的情况下就比较麻烦了。
实现过程
如何实现数组形式的数据的置位
在我们不知道数据具体的长度的时候,我们可以想到将数据统一转换成unsigned char *的形式,这样无论是什么类型的数据,或者是数组,都可以进行相应的置位了,具体的实现:
- 定义数据: *ungined char data;int pos;
- 具体实现:** data[pos/8] |= (0x01<<(pos%8)); **
函数的封装
对于常用的方法,我们肯定要封装成对应得函数,这样才能提高我们的复用率,才能不断的让我们进步。
- 将数据的某一位置1:
/**@fn * @brief 将数据的某一位置1* @param[in] pos 要修改bit数据的位置* @param[in/out] data 输入的数据和修改后返回的数据* @return */
void set_bit(unsigned char *data, unsigned int pos)
{data[pos/8] |= (0x01<<(pos%8));
}
- 将数据的某一位置0:
/**@fn * @brief 将数据的某一位置0 * @param[in] pos 要修改bit数据的位置* @param[in/out] data 输入的数据和修改后返回的数据* @return */
void clr_bit(unsigned char *data, unsigned int pos)
{data[pos/8] &= (~(0x01<<(pos%8)));
}
扩展
有了基础的按位置1和置0的操作,就可以扩展出其他的常用的操作,例如将数据的第3~9位置1,这样我们也能快速的写出对应的操作:
/**@fn * @brief 设置数据某些位的数据 * @param[in] pos 要修改bit数据的起始bit位置* @param[in] count 要修改bit位的个数* @param[in] val 要修改bit位的值,0:bit置0; 1:bit置1* @param[in/out] data 输入的数据和修改后返回的数据* @return */
void modify_bits(unsigned char *data, unsigned int pos, unsigned int count, unsigned char val)
{int i;unsigned int end_pos;end_pos = pos + count;for (i = pos; i<end_pos; i++){val ? set_bit(data, i) : clr_bit(data, i);}
}
结语
记录代码,让编程更精彩。
将数据的指定位置置位相关推荐
- python更改数据框指定位置的数据_python – 移动数据框列并更改列顺序
我有一个名为df的数据框,其中包含以下列数据标题: date A B C D E F G H I 07/03/2016 2.08 1 NaN NaN 1029 2 2.65 4861688 -0.03 ...
- 汇编语言 段前缀的使用 复制内存单元数据到指定位置
题目要求 将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中 分析 0:200~0:20b可以转化为0200:0~0200:b 执行结果 代码 ;将内存ffff:0~fff ...
- python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法
我有一个包含100万行的pandas数据帧.我想用另一组值替换列中900,000行的值.有没有for循环(我需要两天才能完成)的快速方法吗? 例如,查看此示例数据框,其中我已将100万行压缩为8行 i ...
- python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
我有两个Spark数据框: 数据框A: |col_1 | col_2 | ... | col_n | |val_1 | val_2 | ... | val_n | 和数据框B: |col_1 | co ...
- C语言实现文件的局部修改,C语言:在文件的指定位置实现局部修改,而无需重写文件的其他部分...
前言(可跳过) 在进行大型文件的读写操作时,若采用读打开文件a,再将"a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容"保存到文件b,关闭并删除文件a,将文件 ...
- pandas在dataframe指定位置添加新的数据列、使用insert函数
pandas在dataframe指定位置添加新的数据列.使用insert函数 目录 pandas在dataframe指定位置添加新的数据列.使用insert函数 #仿真数据
- python处理表格数据-python读取word 中指定位置的表格及表格数据
1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specT ...
- python读取word指定内容_python读取word 中指定位置的表格及表格数据
1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specT ...
- js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素...
JS定义了一个json数据var test={name:"name",age:"12"};需要给test再添加一个字段,需要什么办法,可以让test的值为{na ...
最新文章
- java的InputStream和OutputStream的理解【转】
- php 点击删除数据,使用php脚本删除数据
- 人类无法抗拒的10种心理(转)
- python百题百练 二级题目_CSDN Python语感百题(一)
- LeetCode 43字符串相乘44通配符匹配
- 限制外来计算机访问,准入网关|网络准入控制|非法接入检测|限制非法访问解决方案...
- Scrapy爬取美女图片续集 (原创)
- 云上的数据安全,是企业互联网化发展的生命线!
- @程序员,如何在五分钟内构建个人网盘服务?| 技术头条
- bzoj 3211: 花神游历各国 bzoj 3038: 上帝造题的七分钟2
- java 正则regex_Java中的正则表达式– Java Regex示例
- sqlsever主库从库如何切换_面试最让你手足无措的一个问题:你的系统如何支撑高并发?...
- 赤兔CMS(CTCMS)V2.0.6版更新了后台模板样式
- 将时谐电磁场引入工程电磁场的意义_电磁场思考题
- boost noncopyable实现与ADL
- Oracle 增加USERS表空间
- 在虚拟机中ping了停不下来怎么办?
- c++ 统计指定字母开头单词的数量
- caffe调用之前的权重和接着断点继续训练
- 大师级管理人物盘点:“颠覆性技术“提出者-克里斯坦森
热门文章
- 华为云计算之ebackup备份原理
- ubuntu 系统环境配置记录
- Markdown结合html表格标签制作简历模板
- GRC结合Hackrf 实现GFSK文本传输
- 一个跑酷小游戏的项目总结
- Comparison of online algorithms for the tracking of multiple magnetic targets in a myokinetic contro
- 【THREE.JS】网页中的炫酷3D
- H3C认证培训实验10 ARP
- 【 Qt编写一个串口助手】
- ROS下的人体姿态识别tf-pose-estimation(tensorflow版本的openpose)