zoukankan      html  css  js  c++  java
  • chunked 编码 解码 c算法 yaneng的专栏 博客频道 CSDN.NET

    chunked 编码 解码 c算法 - yaneng的专栏 - 博客频道 - CSDN.NET

    chunked 编码 解码 c算法

    分类: HTTP 574人阅读 评论(0) 收藏 举报

    // chunked01.cpp : Defines the entry point for the console application.
    //

    /***************************************************
    *            Revision Log Entry
    *    Copyright (C) 2005 YAPCOM Corporation.
    *
    *            All Rights Reserved.
    * File Name    : chunked01.cpp
    * Version    : 1.0.0
    * Author    : Yap
    * Comments    : 解密chunked格式的内容
    *
    * History:
    * Date                Modify By        Comments
    * 2007-7-29 0:27:56    Yap                Create...
    **************************************************/


    #include "stdafx.h"
    #include <stdlib.h>
    #include <string.h>

    //decode && encrypt

    /**************************************************
    * Function Name    : prechunk
    * File Name        : chunked01.cpp
    * Return Type    : bool
    * Argument        : char * str
    * Description    : 解密主函数,原理 首先出现真正内容的个数,然后回车换行(CRLF),接下来是主要内容
    现实完规定的个数之后,就又是回车换行(CRLF)。以上就是一个块,块的格式如下

    正文个数
    CRLF
    正文
    CRLF
    如果文件到结束,会出现
    0正文个数显示如下:
    0
    CRLF
    CRLF
    //自此文件结束

    * Created By    : Yap
    *
    * History        :
    * Date                Modified By         Comment
    * 2007-7-29 0:28:14    Yap                    Create...
    *************************************************/
    char * prechunk(char * str)
    {
        //char * str="1a/r/n1234567890dfdfddfweiiouury/r/n1e/r/ndfdfssddffsddffffffdssssssdfex/r/n1d/r/ndfdfssddffsddffffffdssssssdfe/r/n0/r/n/r/n";
        char str1[10],*str2;
        int len = 0,pos = 0,count = 0;

        sscanf(str, "%x", &len);
        sscanf(str, "%s", str1);
        pos+=strlen(str1);
        pos+=2;
        str2= (char *)malloc(len+1);
        memset(str2,0,len+1);
        strncpy(str2,str+pos,len);
        count = len;

        while(1)
        {
            pos+=len;
            pos+=2;
            sscanf(str+pos, "%x", &len);
            sscanf(str+pos, "%s", str1);
            if (len == 0) break;
            count +=len;
            pos+=strlen(str1);
            pos+=2;
            str2 = (char *)realloc(str2,count+1);
            strncat(str2,str+pos,len);
       }
        strset(str,0);
        strcpy(str,str2);
        free (str2);
        return str;
    }


    int main(int argc, char* argv[])
    {
        char * str="1a/r/n1234567890dfdfddfweiiouury/r/n1e/r/ndfdfssddffsddffffffdssssssdfex/r/n1d/r/ndfdfssddffsddffffffdssssssdfe/r/n0/r/n/r/n";
        char *str1=(char*)malloc(strlen(str)+1);
        strcpy(str1,str);

        prechunk(str1);
        printf("%s/n",str);
        printf("%s/n",str1);
    }

  • 相关阅读:
    Neo4j自定义主键策略
    spring cloud Alibaba nacos 整合Neo4j pom 配置
    spring cloud Alibaba nacos 整合Neo4j配置
    若依前端 devtool source-map设置
    基于draw.io的二次开发,文件增加本地以及oss存储
    十多年来从三个容器管理系统中吸取的教训
    java8 CompletableFuture,allOf多实例返回
    CompletableFuture 使用详解
    使用CompletableFuture实现业务服务的异步调用
    [转]uni-app开发踩坑之路之this指向问题
  • 原文地址:https://www.cnblogs.com/lexus/p/2996330.html
Copyright © 2011-2022 走看看