已知如下信息:
“63766E6176693B” //ftp 用户名+;(ftp 各参数间用 3B,即半角分号;做分割)
“73686968616E6740323031393B” //ftp 密码 + ;
”3131372E37342E3133362E33343B“ //ftp 地址 + ;
“32313B” //ftp 端口号 + ;
”3037323946344236344D4D48455430365639 “//下发的文件名不含“.bin”,而 ftp 服务器上的文件含有“.bin”后缀,需要终端从 ftp 获取文件时添加“.bin”后 缀
如何用C语言实现把上述hex信息解析对应的FTP地址、端口、用户名等十进制消息?
#include <stdlib.h>
#include <string.h>
int hextodec(char *hex)
{
int sum = 0, t, i;
for(i = 0; i < 2; i++, hex++)
{
if(*hex >= 'A' && *hex <= 'F')
t = *hex - 'A' + 10;
else
t = *hex - '0';
if(i == 0)
sum += t * 16;
else
sum += t;
}
return sum;
}
void convert(char *dst, char *src)
{
int i = 0, len, t;
char ch[2];
len = strlen(src);
if(len % 2 != 0)
{
printf("源字符串格式错误\n");
return;
}
while(1)
{
ch[0] = *src++;
ch[1] = *src++;
t = hextodec(ch);
if(t == 0x3b || i > len - 2)
{
*dst = '\0';
return;
}
*dst = t;
dst++;
i += 2;
}
}
int main()
{
char name[5][80] = {"63766E6176693B", "73686968616E6740323031393B", "3131372E37342E3133362E33343B", "32313B", "3037323946344236344D4D48455430365639"};
char buf[100];
for(int i = 0; i < 5 ; i++)
{
convert(buf, name[i]);
printf("%s\n", buf);
}
return 0;
}