深圳市芯华超电子科技:有谁知道这段程序的意思?

来源:百度文库 编辑:神马品牌网 时间:2024/05/10 06:23:04
for(i=0;i<12;i++){
switch(i){
case 0: //年
temp=(g8563_Store[5]>>4 & 0x0f)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 1: //年
temp=(g8563_Store[5]&15)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 2://月
temp=(g8563_Store[4]>>4 & 0x0f)+48;
if(temp<=0x32 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 3://月
temp=(g8563_Store[4]&15)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 4://日
temp=(g8563_Store[3]>>4 & 0x0f)+48;
if(temp<=0x33 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 5://日
temp=(g8563_Store[3]&15)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 6://时
temp=(g8563_Store[2]>>4 & 0x0f)+48;
if(temp<=0x32 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 7://时
temp=(g8563_Store[2]&15)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 8://分
temp=(g8563_Store[1]>>4 & 0x0f)+48;
if(temp<=0x36 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 9://分
temp=(g8563_Store[1]&15)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 10://秒
temp=(g8563_Store[0]>>4 & 0x0f)+48;
if(temp<=0x36 && temp>=0x30){
TimeStr[i]=temp;
}
break;
case 11://秒
temp=(g8563_Store[0]&15)+48;
if(temp<=0x39 && temp>=0x30){
TimeStr[i]=temp;
}
break;
}
}
TimeStr[12]='\0';

}
为什么要左移四位,还要加上48?
TimeStr[12]='\0'; 这是什么意思?

字符'0'到'9'对应ASCII码是0x30-0x39,即十进制的48-57,
这里右移4位,再和某个数做位与,最后再加上48,就是根据g8563_Store的某个元素得到0-9中的某个数。
具体这个程序是干什么的,你给的只是代码片断,我就不知道了。