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

📄 strings.bak

📁 TC35i收发短信的源代码
💻 BAK
字号:
#include "ext_var.h"
#include "Strings.h"

void memcpy(unsigned char *src,unsigned char *dest,unsigned int len)
{
	unsigned int i;

	for(i=0;i<len;i++)
	{
		src[i] = dest[i];
	}
}

void memset(unsigned char *src,unsigned char ch,unsigned int len)
{
	unsigned int i;

	for(i=0;i<len;i++)
	{
		src[i] = ch;
	}
}

//equal:0 , not equal: 1   ,error: -1
char memcmp(unsigned char *src,unsigned char *dest,unsigned int len)
{
	unsigned int i;

	if(len < 1) return -1;

	for(i=0;i<len;i++)
	{
		if(src[i] != dest[i]) return 1;
	}

	return 0;
}

int strlen(unsigned char *src)
{
	unsigned int i;

	i=0;
	while(src[i++]!=0);
	
	return (i-1);
}

//pos -- start position
int strpos(unsigned char *src,int pos,unsigned char ch)
{
	unsigned int i,len;

	len = strlen(src);

	if(len<1) return -1;

	len = len -pos;

	i=0;
	while(i++<len)
	{
		if(src[i+pos]==ch) return (i+pos);
	}
	return(-1);
}

int StrFind(unsigned char *szDest, unsigned char *szFind)
{
    int n=0;
    for(;*szDest!='\0'; ++szDest, ++n)
    {
        if(*szDest == *szFind)
        {
            int k=1;
            for(; szFind[k]!='\0' && szFind[k]==szDest[k]; ++k)
                ;
            if(szFind[k]=='\0') return n;
        }
    }
    return -1;
}

long atol(uchar *strIpt)
{

	int i,numLen;
	long tmp = 0;

	numLen = strlen(strIpt);

	if(numLen<1) return -1;

	//
	for(i=0;strIpt[i]!='\0';i++)
	{
		if(strIpt[i]<'0' || strIpt[i]>'9') return -1;
	}
  
    //start to change
	for(i=0;i<numLen;i++)
	{
		tmp=tmp*10+(strIpt[i]-'0');
	}

    return tmp;
}

void ltoa (unsigned long val, unsigned char *buf )
{
	unsigned char *p;                /* pointer to traverse string */
	unsigned char *firstdig;         /* pointer to first digit */
	unsigned char temp;              /* temp char */
	unsigned char digval;        /* value of digit */

	p = buf;

	firstdig = p;           /* save pointer to first digit */

	do {
		digval = (unsigned char) (val % 10);
		val /= 10;       /* get next digit */

		/* convert to ascii and store */
		if (digval > 9)
			*p++ = (unsigned char) (digval - 10 + 'a');  /* a letter */
		else
			*p++ = (unsigned char) (digval + '0');       /* a digit */
	} while (val > 0);

	/* We now have the digit of the number in the buffer, but in reverse
		order.  Thus we reverse them now. */

	*p-- = 0;            /* terminate string; p points to last digit */

	do {
		temp = *p;
		*p = *firstdig;
		*firstdig = temp;   /* swap *p and *firstdig */
		--p;
		++firstdig;         /* advance to next two digits */
	} while (firstdig < p); /* repeat until halfway */
}

char Asc2BCD(unsigned char *asc,unsigned char *bcd)
{
	int i, j, n;
	int asc_len;
	unsigned char *sn = asc,*sb = bcd;

	asc_len = strlen(asc);

	if(asc_len<1) return -1;

	n = (asc_len + 1) / 2; //渦弝

	for(i = asc_len - 1, j = n - 1; j >= 0; j--)
	{
		if(i >= 0)//媗渦弝
		{
			if(sn[i] < '0'||sn[i] > '9') return -1;
			sb[j] = sn[i] - '0';
			i--;
		}

		if(i >= 0)//寧轀u弝
		{
			if(sn[i] < '0'||sn[i] > '9') return -1;
			sb[j] = (sn[i] - '0') << 4|sb[j];
			i--;
		}
	}
	return n;
}

//n -- bcd count,max 5byte.
char Bcd2Asc(unsigned char n,unsigned char *bcd,unsigned char *asc)
{
	unsigned char i,j,temp,array[10];
	

	for(i=0;i<n;i++)
	{
		temp = bcd[i];
		if((temp&0x0f)>0x09 || (temp&0xf0)>0x90) return -1;
	}

	for(i=0;i<n;i++)
	{
		array[2*i+1] = (bcd[i]& 0x0f)+'0'; //low byte
		temp = bcd[i]& 0xf0;
		temp >>=4;
		temp &= 0x0f;
		array[2*i] = temp+'0'; //high byte
	}
	array[2*n]=0;

	//cut '0' before string
	for(i=0;i<2*n-1;i++)
	{
		if(array[i]!='0') break;
	}

	for(j=0;j<2*n-i;j++)
	{
		asc[j] = array[j+i];
	}
	asc[2*n-i]=0;

	return (2*n-i); //return length
}

//***********************************************************
//崕瓡麔E拵

⌨️ 快捷键说明

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