适用于byte数组某一位上数值高效处理的函数
来源:互联网 发布:mac安装双系统win10 编辑:程序博客网 时间:2024/06/16 06:08
在处理byte(unsigned char) 数组过程中,有时会遇到需要改变数组某一位的问题,或者需要读取数组中某一位的值,这种处理在实现安全算法中比较常见,如DES和AES,所以在这里将两个实用的小函数分享一下。
1. 将byte数组dataddr的位于pos位置的数值改为b0:
首先将pos转换为在数组中的具体位置byte_count和bit_count,注意这里的pos是从1开始数的。然后用位运算将temp调整到目标位置,最后根据要修改的目标值b0,对dataddr目标位置值进行修改。
static void setbit(byte* dataddr,int pos,int b0){
byte byte_count;byte bit_count;
byte temp;
temp = 1;
byte_count = (pos - 1) / 8;bit_count = 7 - ((pos - 1) % 8);
temp <<= bit_count;
if(b0)
dataddr[byte_count] |= temp;
else{
temp = ~temp;
dataddr[byte_count] &= temp;
}
}
2. 读取byte数组dataddr的位于pos位置的数值:
与setbit相似,先将pos转换为数组中的位置,然后对目标位运算的变量temp进行相应的位处理,最后利用&读取目标位置的值作为返回值。
static int getbit(byte* dataddr,int pos){
byte byte_count;
byte bit_count;
byte temp;
temp = 1;
byte_count = (pos - 1) / 8;
bit_count = 7 - ((pos - 1) % 8);
temp <<= bit_count;
if(dataddr[byte_count] & temp)
return 1;
else
return 0;
}
0 0
- 适用于byte数组某一位上数值高效处理的函数
- 5.6 array--高效的数值类型数组
- 查找一个有序数组中某一数值出现的次数
- 数值转换成byte数组
- java数值类型与二进制byte数组之间的转换
- java数值类型与二进制byte数组之间的转换
- 嵌入式 对某一字符串数组的某一位进行赋值为0的作用
- python不同数值(适用于整型的内建函数)类型返回,二进制,八进制otc.
- php数组的相关处理函数(上)
- 快速获取一个数字各个位上的数值
- 数值处理函数
- 高效的输入函数 --- 适用于ACM竞赛里输入数据特别多的情况
- (34)数组的相关处理函数(上)(35)常用的数组相关操作函数(下)
- 数值排位函数 RANK
- Java移位操作符及其对char、byte、short类型数值的处理
- 将二维数组的某一行传入到函数中
- C# byte数组转化位Bitmap
- 高效的位运算
- 将Qt imports目录路径作为参数传递
- 奋斗于软件测试(by leo)
- Network Attack
- JavaScript的24条最佳实践
- vs2010 运行时出现无法启动程序 拒绝访问的一个可能的原因
- 适用于byte数组某一位上数值高效处理的函数
- hdu 2871 Memory Control(线段树)
- Tapestry3 学习笔记(二)
- K2.NET 2003笔记
- 用isostat 和 sar strace
- delphi TPoint类
- 几个常用的FFmpeg小技巧
- IAR编译CC2430例程错误解决方案
- BI 入门学习