1 /*************************************************
2 *函数功能:根据步长切割字符串
3 *参数str:待分割的字符串
4 *参数step:步长
5 *返回值:返回切割得到的字符串
6 *备注:调用需包含string.h
7 *************************************************/
8 char *strsplit(char *str,short step){
9 char bstr[1024] = {0};//转换缓冲区,内存不足可调小
10 static char *str_ptr = NULL;
11 static short idx = 0;
12
13 if(str) {str_ptr = str;idx = 0;}
14 if(idx>strlen(str_ptr)) {return NULL;}
15 strncpy(bstr,str_ptr+idx,step);
16 idx += step;
17
18 return bstr;
19 }
20
21 /************************************************/
22 //用例:转换16进制字符串
23 /************************************************/
24 #include <stdio.h>
25 #include <string.h>
26
27 char *strsplit(char *str,short step){
28 char bstr[1024] = {0};//转换缓冲区
29 static char *str_ptr = NULL;
30 static short idx = 0;
31
32 if(str) {str_ptr = str;idx = 0;}
33 if(idx>strlen(str_ptr)) {return NULL;}
34 strncpy(bstr,str_ptr+idx,step);
35 idx += step;
36
37 return bstr;
38 }
39
40 int main()
41 {
42 char str[] = "00630065006E007400650072002C0061002C0031003200330034003500360023";
43 char str_tmp[80] = {0};
44 char *token;
45
46 printf("%s\n",str);
47
48 token = strsplit(str,4);
49
50 while(token != NULL){
51 char ch[5]={0};
52
53 sscanf(token,"%X",ch);
54 strcat(str_tmp,ch);
55 token = strsplit(NULL,4);
56 }
57
58 printf("\n%s\n",str_tmp);
59 return 0;
60 }