mac_05185 2022-06-13 15:02 采纳率: 67.1%
浏览 13
已结题

C语言如何实现把string类型的FTP地址进行转换?

已知如下信息:

63766E6176693B” //ftp 用户名+;(ftp 各参数间用 3B,即半角分号;做分割)
“73686968616E6740323031393B” //ftp 密码 + ;
”3131372E37342E3133362E33343B“ //ftp 地址 + ;
“32313B” //ftp 端口号 + ;
”3037323946344236344D4D48455430365639 “//下发的文件名不含“.bin”,而 ftp 服务器上的文件含有“.bin”后缀,需要终端从 ftp 获取文件时添加“.bin”后 缀

如何用C语言实现把上述hex信息解析对应的FTP地址、端口、用户名等十进制消息?

  • 写回答

1条回答 默认 最新

  • 浪客 2022-06-13 16:25
    关注
    
    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加