ice_fire_love 发表于 2014-4-2 11:42:02

求教,看不懂一个函数

新手求教。谁能帮我解释下这个函数:

。。。。。
uint TS;

void OpenT(uchar Number, uint Count)
{                                                                  
    uchar*temp;
    temp=(uchar*)(&Count)+1;       
    (*temp)|=0b10000000;       
    (*temp)&=0b10111111;       
    TS=Count;
}

crazydtone 发表于 2014-4-2 11:56:35

本帖最后由 crazydtone 于 2014-4-2 13:57 编辑

不知道你的应用环境,只解释函数内部的内容

8位系统(Little-endian):
Count2Bytes

uchar*temp;// 定义一个指向uchar的指针
temp=(uchar*)(&Count)+1;// 取Count的地址并将其强制转化为指向uchar的指针,+1调整一个char型的长度 ,即就是指向 Count的高Byte!

(*temp)|=0b10000000;    //下面这些你应该明白吧
(*temp)&=0b10111111;   //
TS=Count; //

ice_fire_love 发表于 2014-4-2 13:41:37

多谢观音菩萨点化,俺老孙继续上路......

cmheia 发表于 2014-4-2 14:08:28

{:lol:}卧槽,这都能西游记

xjtyOnly51 发表于 2014-4-4 12:48:19

temp=(uchar*)(&Count)+1;只能说指向高地址

ice_fire_love 发表于 2014-4-4 17:50:35

本帖最后由 ice_fire_love 于 2014-4-4 17:53 编辑

xjtyOnly51 发表于 2014-4-4 12:48
temp=(uchar*)(&Count)+1;只能说指向高地址

那么他指的地方不变,只是值变成高8位的一个字节,对吗? 例如原来指的是 1000_0000_0000_0000,现在指向的值是1000_0000对吗?

如果我不加一,那指向的值是0000_0000对吗?

xjtyOnly51 发表于 2014-4-7 10:56:46

ice_fire_love 发表于 2014-4-4 17:50
那么他指的地方不变,只是值变成高8位的一个字节,对吗? 例如原来指的是 1000_0000_0000_0000,现在指向 ...

其实这个有个字节序的问题,是大端还是小端。如果是小端那就是低字节在低地址,大端的话低字节在高地址

ice_fire_love 发表于 2014-4-7 11:37:07

{:smile:}多谢指点,高手果然厉害
页: [1]
查看完整版本: 求教,看不懂一个函数