📄 strings.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 + -