如果最快的操作一个16位数的高8位?
现在我能想到的就是使用共用体,不知道还有没有什么方法可以最快的操作一个16位变量的高八位,比如,给一个16位数的高8位赋值
uint16_t v16;
大端模式:
uint8_t *pv8 = (uint8_t *)(&v16);
小端模式:
uint8_t *pv8 = (uint8_t *)(&v16);
pv8++;
然后应该就可以任意操作高8位了。。。 #define s2ch(i) (*(uc*)(&(i)))
#define s2cl(i) *(((uc*)(&(i)))+1) XIVN1987 发表于 2012-7-23 18:14 static/image/common/back.gif
uint16_t v16;
大端模式:
uint8_t *pv8 = (uint8_t *)(&v16);
谢谢,终于知道怎么样用了,指针真是强大啊 hefq 发表于 2012-7-23 18:14 static/image/common/back.gif
#define s2ch(i) (*(uc*)(&(i)))
#define s2cl(i) *(((uc*)(&(i)))+1)
这方法好,可以不使用共用体了,谢谢大侠 本帖最后由 壹佰法拉 于 2012-7-25 23:38 编辑
我操作一个字节的某位或某些位就是直接用“与”,“或”,“移位”;速度快,代码小;局部使用很潇洒!
用 union 操作方便,直观!长篇大论用着好!
例如:
intTest=0;
给这个变量高8位赋值 0XAB;低8位赋值 0XCD;
Test=0X00AB;
Test=Test<<8;//到这里已经给高8位赋值完毕
Test&=0XFF00; //清零低8位;保护高8位;
Test|=0X00CD; //直接给低8位赋值;
页:
[1]