博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
chunked 编码 解码 c算法 - yaneng的专栏 - 博客频道 - CSDN.NET
阅读量:2210 次
发布时间:2019-05-05

本文共 2070 字,大约阅读时间需要 6 分钟。

分类:
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);
}

posted on
2013-04-02 19:42  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/lexus/archive/2013/04/02/2996330.html

你可能感兴趣的文章
后端技术杂谈6:白话虚拟化技术
查看>>
后端技术杂谈7:OpenStack的基石KVM
查看>>
后端技术杂谈8:OpenStack架构设计
查看>>
后端技术杂谈9:先搞懂Docker核心概念吧
查看>>
后端技术杂谈10:Docker 核心技术与实现原理
查看>>
夯实Java基础系列2:Java自动拆装箱里隐藏的秘密
查看>>
夯实Java基础系列1:Java面向对象三大特性(基础篇)
查看>>
夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
查看>>
夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
查看>>
Java 未来行情到底如何,来看看各界人士是怎么说的
查看>>
IntelliJ 平台 2020 年路线图
查看>>
走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
查看>>
微软宣布加入 OpenJDK,打不过就改变 Java 未来!
查看>>
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
查看>>
为什么强烈推荐 Java 程序员使用 Google Guava 编程!
查看>>
先搞清楚这些问题,简历上再写你熟悉Java!
查看>>
【数据库】关系数据库和非关系数据库的优缺点
查看>>
【数据结构】动态顺序表
查看>>
Markdown的基础使用
查看>>
Linux基础命令
查看>>