1.大写转换为小写字符串:
void Upper2Lower(unsigned char *code,unsigned char *code1)
{
uint16 src_len = 0;
uint16 i = 0;
src_len =strlen(code); //获取字符的长度
for(i= 0;i < src_len;i++)
{
if( code[i] >='A' && code[i] <= 'Z' )
{
code1[i] = code[i] + 'a' -'A';
}
else
{
code1[i] = code[i];
}
}
code[i] = '\0';
}
2.整型转为字符串:
char* int2stri(int n, char* s)
{
char temp[32];
int i=0;
int j=0;
int k=0;
int h=1;
if(n>0)
{
while (n>0)
{
temp[i++] = n%10;
n=n/10;
}
while(i–)
{
s[j++]=temp[i]+‘0’; //整数+可转换为字符
}
s[j]=’\0’;
}
else if(n == 0)
{
s[0]= n +‘0’;
}
else if(n < 0)
{
s[0]= ‘-’;
n = -1*n;
while (n>0)
{
temp[k++] = n%10;
n=n/10;
}
while(k–)
{
s[h++]=temp[k]+‘0’; //整数+可转换为字符
}
s[h]=’\0’;
}
return s;
}
3.字符串转为整型:
int str2int(uint8 *s)
{
int temp = 0;
int vl = 0;
uint8 flag = 0;
if (s == NULL) return 0;
while(*s != '\0')
{
if (*s == '-')
{
flag = 1;
s++;
}
temp = *s-'0';
vl = vl*10 + temp;
s++;
}
return flag == 1 ? -vl:vl;
}
4.字符串中插入字符串:
void Intfun(unsigned char *str,unsigned char *src,uint8 n)//形参str为要插入的字符串,src为原字符串,n为插入的位置
{
uint8 src_len=0,str_len=0,src_str_len=0;
unsigned char p[300]; //临时存储
uint8 i = 0;
uint8 j=0;
src_len =strlen(src); //获取字符的长度
str_len =strlen(str);
//src_str_len =src_len +str_len;
for(i= n;i < src_len;i++)
{
p[j++]=src[i]; //缓存剩余字符
}
p[j]='\0';
i=n;
while(*str!= '\0')
{
src[i++]=*str++; //要衔接的值
}
src[i] = '\0';
strcat(src,p);
}
5.IP地址转换为Int型:
int IP_str2int(const char *IP)
{
uint32 uResult = 0;
uint32 nShift = 24;
uint32 temp = 0;
const unsigned char *pStart = IP;
const unsigned char *pEnd = IP;
while (*pEnd != '\0')
{
while (*pEnd!='.' && *pEnd!='\0')
{
pEnd++;
}
temp = 0;
for (pStart; pStart!=pEnd; ++pStart)
{
temp = temp * 10 + *pStart - '0';
}
uResult += temp<<nShift;
nShift -= 8;
if (*pEnd == '\0')
break;
pStart = pEnd + 1;
pEnd++;
}
return uResult;
}
6.16进制的数组转为字符串:
const unsigned char Num2CharTable[16] = “0123456789ABCDEF”;
void HexArrayToString(unsigned char *hexarray,int length,unsigned char *string)
{
int i = 0;
while(i < length)
{
*(string++) = Num2CharTable[(hexarray[i] >> 4) & 0x0f];
*(string++) = Num2CharTable[hexarray[i] & 0x0f];
i++;
}
*string = 0x0;
}
7.取出除去不要的部分字符串。
int DeChunk(char * input, char * output, uint16_t *outlen , char firstflg)
{
char *input_tmp = input;
char *input_tmp_bak;
char output_tmp = output;
char bytelen, i;
short datalen = 0;
char datalen_tmp;
//test_i++;
if(firstflg)
{
if(memcmp((void)input_tmp, “HTTP/1.1 200 OK”, 15))
{
return -1;
}
input_tmp = strstr(input_tmp, “\r\n\r\n”);
if(NULL == input_tmp)
{
return -2;
}
input_tmp += 4;
*outlen = 0;
}
input_tmp_bak = input_tmp;
input_tmp = strstr(input_tmp, "\r\n");
if(NULL == input_tmp)
{
return -3;
}
bytelen = input_tmp - input_tmp_bak;
if(bytelen > 3)
{
return -4;
}
for(i = 0; i < bytelen; i++)
{
if(input_tmp_bak[i]>='0'&&input_tmp_bak[i]<='9')
datalen_tmp=input_tmp_bak[i]-'0';
if(input_tmp_bak[i]>='a'&&input_tmp_bak[i]<='z')
datalen_tmp=input_tmp_bak[i]-'a'+10;
if(input_tmp_bak[i]>='A'&&input_tmp_bak[i]<='Z')
datalen_tmp=input_tmp_bak[i]-'A'+10;
datalen=datalen*16+datalen_tmp;
}
input_tmp += 2;
if(0 != datalen)
{
memcpy(output_tmp, input_tmp, datalen);
input_tmp += datalen+2;
output_tmp += datalen;
*outlen +=datalen;
return DeChunk(input_tmp, output_tmp,outlen, 0);
}
else
{
output_tmp[0] = '\0';
}
return 0;
}
8.查找子字符串在母字符串的出现的次数:
int Num0fstr(char *Mstr, char *substr)
{
int number = 0;
char *p;//
char *q;//
while(*Mstr != '\0')
{
p = Mstr;
q = substr;
while((*p == *q)&&(*p!='\0')&&(*q!='\0'))
{
p++;
q++;
}
if(*q=='\0')
{
number++;
}
Mstr++;
}
return number;
}
9.查找指定的地方,取出后面的字符串:
int findCJsonObjString(uint8_t *objroot, uint8_t *objname, uint8_t * output)
{
uint8_t rtn = 0;
uint8_t *pAddr = NULL;
uint8_t *pAddr_bakup = NULL;
uint16_t length =0;
pAddr = strstr(objroot, objname);
if(NULL == pAddr)
{
return -1;
}
pAddr = strstr(pAddr, ":");
pAddr_bakup = strstr(pAddr, "\"");
pAddr_bakup += 1;
pAddr = strstr(pAddr_bakup, "\"");
length = pAddr - pAddr_bakup;
memcpy(output, pAddr_bakup, length);
output[length] = '\0';
return 0;
}
int findCJsonObjEvrey(uint8_t *objroot, uint8_t *objname, uint8_t * output)
{
uint8_t rtn = 0;
uint8_t *pAddr = NULL;
uint8_t *pAddr_bakup = NULL;
uint16_t length =0;
pAddr = strstr(objroot, objname);
if(NULL == pAddr)
{
return -1;
}
pAddr = strstr(pAddr, "\r\n");
pAddr_bakup = strstr(pAddr, ":");
pAddr_bakup += 2;
pAddr = strstr(pAddr_bakup, "\"\r\n}");
length = pAddr - pAddr_bakup;
memcpy(output, pAddr_bakup, length);
output[length] = '\0';
return 0;
}
int findWebSocketObjString(uint8_t *objroot, uint8_t *objname, uint8_t * output)
{
uint8_t rtn = 0;
uint8_t *pAddr = NULL;
uint8_t *pAddr_bakup = NULL;
uint16_t length =0;
pAddr = strstr(objroot, objname);
if(NULL == pAddr)
{
return -1;
}
pAddr = strstr(pAddr, ":");
pAddr_bakup = strstr(pAddr, " ");
pAddr_bakup += 1;
pAddr = strstr(pAddr_bakup, "\r\n");
length = pAddr - pAddr_bakup;
memcpy(output, pAddr_bakup, length);
output[length] = '\0';
return 0;
}
10.字符串对比:strcmp
11.sprintf的用法:
void RTE_SettingTime(void)
{
uint8_t body[200];
uint16_t len = 0;
uint16_t lenbody;
RTE_ReadTime();
lenbody = sprintf(&body[0],"{\"time\": {\"utc\": \"%s-%s-%sT%s:%s:%sZ\"}}\r\n",Timeyear,TimeMonth,TimeDay,TimeHour,TimeMinute,TimeSecond);
len += sprintf(&rem_LEMWH_SetTiming_Data[len], "PUT /v1/settings HTTP/1.1\r\n");
len += sprintf(&rem_LEMWH_SetTiming_Data[len], "Content-Type: application/json\r\n");
len += sprintf(&rem_LEMWH_SetTiming_Data[len], "Content-Length: %d\r\n\r\n",lenbody);
sprintf(&rem_LEMWH_SetTiming_Data[len], "%s",body);
}