|
阅读:1216回复:17
问个C语言的问题
有个问题想请教一下:
我定义了一个类型: typedef union _u09 { // unsigned char value; struct _C { unsigned char sign : 1 ; //bit 0 unsigned char lattice : 8 ; //bit1-9 }C; }u09; u09disp_buff_9[71]; 我想调用下面这个函数: void displayLcd(unsigned char *thisBuff,unsigned char block) 我使用的方法是displayLcd(((unsigned char*)disp_buff_9),0); 结果这边获得的数据不是连续的,而是 9个有效bit + 7空的bit + 9个有效bit + 7空的bit + …… 我想问一下怎么才能连续地赋值 |
|
|
|
2C#
发布于:2006-01-19 09:33
Re:问个C语言的问题
万贤兄每次都是让我们点击猪头 |
|
|
|
3C#
发布于:2006-01-19 09:28
Re:问个C语言的问题
帮你写了个流程图~word那不会用,凑合用windows下的画图简单作了一个~[em061]
点击[a=http://www.wait4c.com/bbs/userfiles/8879/2006011909262984812.jpg][em112][/a] |
|
|
5C#
发布于:2006-01-17 10:39
Re:问个C语言的问题
/**********************************makeLattice******************************************/
//将thisbuff里面的数据每8位空一位地插入disp+buff里面 void makeLattice(unsigned char *thisBuff) {//具体流程见流程图 //用上下两个字节里面的数据合成一个字节 unsigned char i = 0 , j = 0,n; for(n = 0;n < DISP_BUFF_SIZE*5; n++)// { if( ((n+9)%18) ==0 ) {j=j+1;} if( ((n+1)%18) ==0 ) {j=j+2;} disp_buff[1][n] &= (0x01<<i); disp_buff[1][n] |= (thisBuff[n-j]<<(i+1)) | (thisBuff[n-1-j]>>(8-i)); i = i + 1; if(i == 9) { i=0; } } } 估计这段代码应该是可以的了 |
|
|
|
6C#
发布于:2006-01-16 18:19
Re:问个C语言的问题
哦~看错了~
[ 2006-01-16 18:21:10 万贤 修改 ] |
|
|
7C#
发布于:2006-01-16 17:50
Re:问个C语言的问题
上面我发的算法是有错误的
谁能帮我看看 |
|
|
|
8C#
发布于:2006-01-16 17:40
Re:问个C语言的问题
如果设一个数组,有9个元素,然后让i=0,i++,然后用一个指针,一个个顺序值入数组,然后在输出这数组,把九个数组设成1~9就不就型了么? |
|
|
9C#
发布于:2006-01-16 10:12
Re:问个C语言的问题
隔行如隔山打牛....还是觉得写C的牛X~~JAVA看起来很没技术含量, 真没劲~~ 趁着年轻 我劝你丫还是赶紧转向C||C++吧 |
|
|
|
10C#
发布于:2006-01-16 09:43
Re:问个C语言的问题
隔行如隔山打牛....
还是觉得写C的牛X~~JAVA看起来很没技术含量, 真没劲~~ |
|
|
|
11C#
发布于:2006-01-16 09:41
Re:问个C语言的问题
我到现在也没找到好的算法
只好放弃了u09这个类型 用两个unsigned char 类型的数组,用隔8插1的算发去实现其功能了 感觉不是太好 /**********************************makeLattice******************************************/ //将thisbuff里面的数据每8位空一位地插入disp+buff里面 void makeLattice(unsigned char *thisBuff) {//具体流程见流程图 //用上下两个字节里面的数据合成一个字节 unsigned char i = 1 , j = 0,n; for(n = 0; n < (DISP_BUFF_SIZE*5); n++) { disp_buff[1][n] &= (0x80 >>(i-1 )); disp_buff[1][n] |= (thisBuff[n-j] <<i) | (thisBuff[n-1-j]>>(9-i)); i = i + 1; if(i == 9) { i=0; j=j+1; } } } |
|
|
|
12C#
发布于:2006-01-15 21:49
Re:问个C语言的问题
那还要调用void displayLcd() 函数?输出时需要再设个变量吧?displayLcd()有范围么?是无限循环的么?有些不太明白,望二位执教~ |
|
|
13C#
发布于:2006-01-15 16:02
Re:问个C语言的问题
位流是说按 bit 的方式操作数据, 就是按 bit 去读写一块内存
c 里都是按 byte 方式读写数据, 但是提供 <<, >>, &, |, 等位操作。 这个程序会写吧, 去写一下 然后就可以9位9位操作内存块了 :) |
|
|
|
14C#
发布于:2006-01-15 15:26
Re:问个C语言的问题
c/c++ 结构 size 不可能以 bit 为单位啊, 都是以 byte 为基本单位sizeof(_u09) 会被对齐到 2 bytes or 4 bytes可以用位流做 铁板大哥~可以用位流做是什么意思? |
|
|
15C#
发布于:2006-01-15 15:07
Re:问个C语言的问题
c/c++ 结构 size 不可能以 bit 为单位啊, 都是以 byte 为基本单位
sizeof(_u09) 会被对齐到 2 bytes or 4 bytes 可以用位流做 |
|
|
|
17C#
发布于:2006-01-13 15:08
Re:问个C语言的问题
...隔行如隔靴搔痒.... |
|
|