⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sms-7weima_bj.c

📁 ascii码到7位编解码(C语言源程序代码短信中用的到)
💻 C
字号:
//ICC-AVR application builder : 2006-12-1 9:26:37
// Target : M128
// Crystal: 7.3728Mhz

#include <iom128v.h>
#include <macros.h>
#define uchar  unsigned char
#define uint   unsigned int
#define ulong  unsigned long
uchar as[]={"Welcome to szght!"},as1[160];
uchar sms_ascii_7pdu(uchar *shouzhi,uchar zijie)
{//ascii-pdu7 编码
   uchar shuju,fanhuizhi=zijie-(zijie/8),loop,quzhi=0,yiwei=0,yiwei_d=7;
   uchar *zhizhen=shouzhi;
   for(loop=0;loop!=zijie;++loop)
   {
      if(quzhi!=0xff){quzhi=(quzhi<<1)|1;}else{quzhi=1;}
	  shuju=*(shouzhi+1)&quzhi;
	  if(yiwei<9)
	  {
    	  *shouzhi>>=yiwei;++yiwei;
		  if(loop==(zijie-1)){break;}
	  }
	  else
	  {
    	  yiwei=0;
	  }
	  if(yiwei_d!=0)
	  {
    	  shuju<<=(yiwei_d);--yiwei_d;
	  }
	  else
	  {
    	  yiwei_d=7;
		  shuju<<=(yiwei_d);--yiwei_d;
	  }
	  *zhizhen=*shouzhi|shuju;
	  ++zhizhen;
	  if(quzhi==0x7f)
	  {quzhi=0;yiwei=0;yiwei_d=7;++shouzhi;}
	  ++shouzhi;
   }
   return(fanhuizhi);
}
uchar sms_7pdu_ascii(uchar *shouzhi,uchar *mubiaoshouzhi,uchar zijie)
{//pdu7-ascii 解码
   uchar hc1,hc2,fanhuizhi=0,bz=0,zz=0,zz_d=7;
   for(;zijie!=0;--zijie)
   {
     if(bz!=0xff){bz=(bz>>1)|0x80;}
	 //57 65 6c 63 6f 6d 65 20 74 6f 20 73 7a 67 68 74 21
	 hc1=(*shouzhi&bz)>>zz_d;*mubiaoshouzhi=*shouzhi&(~bz);
	 if(zz!=0)
	 {
    	 *mubiaoshouzhi<<=zz;
		 *mubiaoshouzhi=*mubiaoshouzhi|hc2;
		 if(bz==0xfe)
		 {
    		 ++mubiaoshouzhi;++fanhuizhi;
			 *mubiaoshouzhi=hc1;
		 }
	 }
	 ++shouzhi;++mubiaoshouzhi;++fanhuizhi;
	 
	 if(zz<9){++zz;}
	 if(zz_d!=0){--zz_d;}
	 if(bz!=0xfe){hc2=hc1;}
	 if(bz==0xfe)
	 {
    	 bz=0x0;zz=0;zz_d=7;
	 }
	 
   }
   return(fanhuizhi);
}
//
void main(void)
{
	uchar *shouzhi,*mubiaoshouzhi;uchar zijie,a;
	shouzhi=&as[0];
	zijie=17;
	a=sms_ascii_7pdu(shouzhi,zijie);
	zijie=a;
	shouzhi=&as[0];
	mubiaoshouzhi=&as1[0];
	a=sms_7pdu_ascii(shouzhi,mubiaoshouzhi,zijie);
	zijie=a;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -