首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

打包函数,对一个数据类型的每一个字节进行操作

2013-12-04 
封装函数,对一个数据类型的每一个字节进行操作!一个字节8位,比如 int 类型,占用4个字节现在需要对int 的第

封装函数,对一个数据类型的每一个字节进行操作!
一个字节8位,比如 int 类型,占用4个字节
现在需要对int 的第一个字节也就是低八位进行写一段数据,或者数字,然后依次写 第二个字节,第三个字节,
比如函数 void writebit(void *Buffer,int nLen,int nPos,char cWriteData) 
 第一个参数表示要写的缓冲区 第二个参数缓冲区大小,多少个字节,第三个参数表示在哪个字节写,第四个参数表示要写个什么东西

然后读  void readbit(void *buffer,int nLen,int nPos,char *cwiredata); 参数的意思一:要读取的缓冲区,二:缓冲区的大小,字节,三,要读的字节, 四 读取到的数据


int n = 0;
比如 writebit(&n,4,1,123);
char c;
readbit(&n,4,1,c);
c输出的就是123

这两个函数如何实现
[解决办法]
用bitset类就可以很好实现了
[解决办法]
可以使用这样的方法
int a=123;
unsigned char* p=(unsigned char*)&a;
p[0]=1;
p[1]=2;
p[3]=3;
p[4]=4;


[解决办法]


#include <stdio.h>

void readbit(void *Buffer,int nLen,int nPos,char *cWiriteData)
{
char* p = (char*)Buffer;
*cWiriteData = p[nPos - 1]; 
}
 
void writebit(void *Buffer,int nLen,int nPos,char cWriteData)
{
char* p = (char*)Buffer;
p[nPos - 1] = cWriteData;
}
 
int main(int argc, char const *argv[])
{
 
int n = 0;
writebit(&n,4,1,123);
char c;
readbit(&n,4,1,&c);
printf("%d\n", c);
return 0;
}


引用:
一个字节8位,比如 int 类型,占用4个字节
现在需要对int 的第一个字节也就是低八位进行写一段数据,或者数字,然后依次写 第二个字节,第三个字节,
比如函数 void writebit(void *Buffer,int nLen,int nPos,char cWriteData) 
 第一个参数表示要写的缓冲区 第二个参数缓冲区大小,多少个字节,第三个参数表示在哪个字节写,第四个参数表示要写个什么东西

然后读  void readbit(void *buffer,int nLen,int nPos,char *cwiredata); 参数的意思一:要读取的缓冲区,二:缓冲区的大小,字节,三,要读的字节, 四 读取到的数据


int n = 0;
比如 writebit(&n,4,1,123);
char c;
readbit(&n,4,1,c);
c输出的就是123

这两个函数如何实现

热点排行