chunked 編碼 解碼 c演算法 – yaneng的專欄 – 部落格頻道 – CSDN.NET

來源:互聯網
上載者:User

chunked 編碼 解碼 c演算法 - yaneng的專欄 - 部落格頻道 - CSDN.NET

chunked 編碼 解碼 c演算法 分類: HTTP 2009-07-27 11:17 574人閱讀 評論(0) 收藏 舉報演算法ccomments解密datefile

// 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);
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.