??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99国产精品成人欧美,精品久久久久久无码人妻热,久久精品一本到99热免费http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95496.html肥仔肥仔Mon, 07 Sep 2009 13:58:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95496.htmlhttp://www.shnenglu.com/woaidongmao/comments/95496.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95496.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/95496.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/95496.html最q给Httpdownload 装?jin)支?/span>gzip传输

 

?/span>HTTP的角?/span>

1 客户?/span> ?/span>http Request  Header上带?/span> Accept-Encoding:gzip,deflate

2服务器若是支?/span>gzip压羃则在http reponse eader

部分q回Content-Encoding: gzip 或?/span>Content-Type: application/x-gzip

3?/span>body部分?/span>gzip解压~?/span> 则得到网内?/span>.

传说?/span>ie?/span>bug 在处?/span>js css压羃的时候有bug,我不理解 挺简单的怎么?x)?/span>bug?/span>.

?/span>gzip的角?/span>

gzip是一U数据格?/span> 默认且目前仅使用deflate法压羃data部分

zlib也是一U数据格?/span>,使用defalte法压羃数据部分.

deflate是一U压~算?/span>,?/span>huffman~码的一U加?/span>

 

zlib是一个开源库, 提供deflate压羃和对应的infalte解压~?/span>.

不过zlib默认?/span>deflate infalte默认是处?/span>zlib格式数据.必须使用

deflateInit2(&strm, DEFAULT_COMPRESSION,Z_DEFLATED, DEFAULT_WINDOWSIZE,DEFAULT_MEMLEVEL, Z_DEFAULT_STRATEGY);

初始化才是处?/span>raw deflate data.(q一点在zlib manul没有?/span>,?/span>faq中提?/span>,困扰?jin)我好?/span>,q是同事L帮我调试发现)

至于gzip格式解析 对着RFC写就可以?/span>.

参见RFC 1950 关于zlib http://www.faqs.org/rfcs/rfc1950.html

      RFC 1951 关于deflate http://www.faqs.org/rfcs/rfc1951.html

      RFC 1952 关于gzip http://www.faqs.org/rfcs/rfc1952.html 


nt  CGzip::Ungzip(const std::string & inStr , std::string &outStr){
    static int nFileCount=0;
        nFileCount++;
    string strZipFileName="test";
//    CConvert::StrToFile(inStr,strZipFileName+CConvert::toString<int>(nFileCount)+"H.gzip"clip_image001;
    if(inStr.length()<11){
        return -1;   
    }
    //process gzip header
    unsigned int skipCt = 10;
    unsigned int skipZeroCt = 0;
    unsigned char ID1 = inStr[0];
    unsigned char ID2 = inStr[1];
    unsigned char XFL=inStr[8];
    bool bFEXTRA = false ;
    bool bFNAME = false ;
    bool bFCOMMENT = false ;
    bool bFHCRC = false ;
    unsigned int XLEN = 0;
   
    if( (ID1!=31) && (ID2!=139)){
        return -1;  //
?/span>gzip头部
        }
    unsigned char CM = inStr[2];
    if(CM!=clip_image002{
        return -1; //
现在都只处理 deflate压羃?/span>
    }
    unsigned char FLG = inStr[3];
    if( (FLG & GZIP_HEAD_FEXTRA) != 0){
        bFEXTRA = true ;
        skipCt += 2;
        XLEN = inStr[10]+ inStr[11]*256 ;//
按照端字节序列处理
        skipCt += XLEN;
    }
    if( (FLG & GZIP_HEAD_FNAME) != 0){
        bFNAME = true;
        skipZeroCt++;
    }
    if( (FLG & GZIP_HEAD_FCOMMENT) != 0){
        bFCOMMENT = true;
        skipZeroCt++;   
    }
   
    size_t passedZeroCt = 0;
   
    size_t iStep = skipCt ;
    for( size_t iStep =  skipCt ; iStep<inStr.length(); iStep++){
            if(passedZeroCt>=skipZeroCt){
                break;   
            }
            if(inStr[iStep]==''clip_image001{
                passedZeroCt++;   
            }
       
    }
    skipCt = iStep ;
    if( (FLG & GZIP_HEAD_FHCRC) != 0){
        bFHCRC = true;
        skipCt+=2 ;
    }
        string coreStr = inStr.substr(skipCt,inStr.length()-8-skipCt);
           return CGzip::Inflate(coreStr,outStr);
   
   
   
}

 

int  CGzip:clip_image003ogzip(const std::string & inStr , std::string &outStr){
    char pAddHead[10];
    unsigned long crc = 0;
    // gzip header
    static const char deflate_magic[2] = {'37', '\213'};
    snprintf(pAddHead, 10,
            "%c%c%c%c%c%c%c%c%c%c", deflate_magic[0],
            deflate_magic[1], Z_DEFLATED, 0 /* flags */,
            0, 0, 0, 0 /* 4 chars for mtime */,
            0 /* xflags */, 0xff);
    string addHead(pAddHead,10);
    //gzip's raw deflate body
    if(CGzip:clip_image003eflate(inStr,outStr)<0){
        return - 1;   
    }
    //gzip trailer
    crc = crc32(crc, (const Bytef*)inStr.data(), inStr.length());
    char  tailBuf[8];
    memcpy(tailBuf, &crc, 4);
    int isize=inStr.size();
    memcpy(tailBuf,&isize,4);
    string tailStr(tailBuf , 8 );
    outStr = addHead + outStr+tailStr;     //
    return outStr.length(); //



肥仔 2009-09-07 21:58 发表评论
]]>
zlib用法单说?/title><link>http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95495.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 07 Sep 2009 13:54:00 GMT</pubDate><guid>http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95495.html</guid><wfw:comment>http://www.shnenglu.com/woaidongmao/comments/95495.html</wfw:comment><comments>http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/woaidongmao/comments/commentRss/95495.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/woaidongmao/services/trackbacks/95495.html</trackback:ping><description><![CDATA[     摘要: 1. 如何获得zlib zlib的主|:http://www.zlib.net/ 2. 用VC++6.0打开 ?下蝲的源代码解压打开,VC6.0的工E已l徏好了(jin),在\projects\visualc6. 双击zlib.dsw, 可以在VC++6.0中看到里面有3个工E? zlib 是库文g(~译讄选中 win32 lib debug / release), 工程example 是如何?z...  <a href='http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95495.html'>阅读全文</a><img src ="http://www.shnenglu.com/woaidongmao/aggbug/95495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/woaidongmao/" target="_blank">肥仔</a> 2009-09-07 21:54 <a href="http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用 VC ~译 Pcrehttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95493.html肥仔肥仔Mon, 07 Sep 2009 13:47:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95493.htmlhttp://www.shnenglu.com/woaidongmao/comments/95493.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95493.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/95493.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/95493.html? Fenying

  以前用GretaQ但怎么都觉得不爽,特别是用惯了(jin)PHP的我Q用着POSIX的正则表辑ּ很不?fn)惯?

  于是今天琢磨?jin)下PcreQ这个号U最强大的正则表辑ּ库…?

  不过Q比起Greta最郁闷的就是编译Pcre?jin)…?

  在网上找?jin)一D实在不怎么有用Q居然要用到mv.exeQW(xu)indows XP下上哪找去?

  能用renameZ么要用mv.exeQ?

  把那D늼译脚本“强改”以后,成?jin)下面的样子了(jin)…?

  当然你还是得有sed.exe

  如果没有L(fng)此下?sed.exe

  然后把sed.exe攑ֈpcre源码目录下,把下面的文字保存?sh)make.batQ用cmdq入pcre目录Q运行make卛_?

@echo off
echo 正在预处?..
echo ------------------------------------------
copy /y config.h.generic bak.h.generic
sed -e "s/#define HAVE_BCOPY 1/#define HAVE_BCOPY 0/g" config.h.generic > config.h
copy /y pcre.h.generic pcre.h
copy /y pcre_chartables.c.dist pcre_chartables.c
echo ------------------------------------------
echo 正在~译 dftables.exe ...
echo ------------------------------------------
cl -MD -DHAVE_CONFIG_H dftables.c
dftables.exe pcre_chartables.c
echo ------------------------------------------
echo 正在~译源代码ؓ(f)Obj文g...
echo ------------------------------------------
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_chartables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_compile.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_config.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_dfa_exec.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_exec.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_fullinfo.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_get.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_globals.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_info.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_maketables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_newline.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ord2utf8.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_refcount.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_study.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_tables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_try_flipped.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ucp_searchfuncs.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_valid_utf8.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_version.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_xclass.c
echo ------------------------------------------
echo 正在生成Lib文g...
echo ------------------------------------------
lib -out:pcre.lib pcre_chartables.obj pcre_compile.obj pcre_config.obj pcre_dfa_exec.obj pcre_exec.obj pcre_fullinfo.obj pcre_get.obj pcre_globals.obj pcre_info.obj pcre_maketables.obj pcre_newline.obj pcre_ord2utf8.obj pcre_refcount.obj pcre_study.obj pcre_tables.obj pcre_try_flipped.obj pcre_ucp_searchfuncs.obj pcre_valid_utf8.obj pcre_version.obj pcre_xclass.obj
echo ------------------------------------------
echo 正在q原...
echo ------------------------------------------
copy /y bak.h.generic config.h.generic
echo ------------------------------------------
echo 正在清理...
del *.obj
del dftables.exe
del bak.h.generic
del config.h
del dftables.lib
del dftables.exp
del pcre_chartables.c
echo ------------------------------------------
echo 完成
echo 最l生成列表:(x)
echo -       pcre.lib
echo -       pcre.h
echo ------------------------------------------
pause
@echo on

  最后生成pcre.lib和pcre.h两个文g?/p>

肥仔 2009-09-07 21:47 发表评论
]]>
VC++中用Zlib的一个例?/title><link>http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95490.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 07 Sep 2009 13:46:00 GMT</pubDate><guid>http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95490.html</guid><wfw:comment>http://www.shnenglu.com/woaidongmao/comments/95490.html</wfw:comment><comments>http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/woaidongmao/comments/commentRss/95490.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/woaidongmao/services/trackbacks/95490.html</trackback:ping><description><![CDATA[<p>首先?a >www.zlib.net</a>下蝲个ZLIB,解压~后打开zlib-1.2.3\projects\visualc6\zlib.dsw <p>选择Win32 LIB Release 按F7~绎生成zlib.lib <p>工程中用时?<p>D:\zlib-1.2.3\projects\visualc6\Win32_LIB_Release\zlib.lib <p>D:\zlib-1.2.3\zlib.h <p>D:\zlib-1.2.3\zconf.h <p>拯到所在工E目录下 <p>然后 <p>#include "zlib.h"<br>#pragma comment(lib,"zlib.lib") <p>void CZlibTestDlg::OnButton1() <br>{<br>const unsigned char strSrc[]="hello world!\n\<br>aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文试 中文试\<br>aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文试 中文试\<br>aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文试 中文试\<br>aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文试 中文试"; <p>     unsigned char buff[1024]={0},strDst[1024]={0};<br>     unsigned long srcLen=sizeof(strSrc),bufLen=sizeof(buff),dstLen=sizeof(strDst);<br>CString strc,strc2,strc3;<br>     strc.Format("Src string:%s\nLength:%d\n===================\n",strSrc,srcLen);<br>     //压羃<br>      compress(buff,&bufLen,strSrc,srcLen);<br>      strc2.Format("\nAfter Compressed Length:%d\nCompressed String:%s\n==============\n",bufLen,buff);<br>     //解压~?br>      uncompress(strDst,&dstLen,buff,bufLen);<br>      strc3.Format("\nAfter UnCompressed Length:%d\nUnCompressed String:%s\n",dstLen,strDst);<br>   AfxMessageBox(strc+strc2+strc3); <br>}</p><img src ="http://www.shnenglu.com/woaidongmao/aggbug/95490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/woaidongmao/" target="_blank">肥仔</a> 2009-09-07 21:46 <a href="http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎么使用PCRE库?http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95492.html肥仔肥仔Mon, 07 Sep 2009 13:46:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95492.htmlhttp://www.shnenglu.com/woaidongmao/comments/95492.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95492.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/95492.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/95492.html一直找PCRE的学?fn)资料,|上没有发现很全面的Q回q头?jin)仔l看?jin)一下PCRE源码dochtml下的资料Q发现其实这些文档就是非怸错的学习(fn)材料?

今天看了(jin)一下如何用PCREQ还没有涉及(qing)到PCRE原理和实现的代码。我们可以在http://www.pcre.org/上下载到pcre的代码,下蝲到的源文件pcre-x.x.tar.bz2在linux下面很容易就可以被编译和安装(x86 pdcpu??

./configure

make

make install

PCRE~译安装之后Q以一个lib库的方式提供l用L(fng)序进行用,PCRE lib 提供?jin)一lAPI,通过q一lAPI可以实现cM于Perl语法的正则表辑ּ查找和匹配的功能。(PCREE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl, with just a few differences.Q?

要想使用好PCREQ要?jin)解很多正则表达式的内容、同旉要对PCREq行很多的配|,从而其支持不同的模式和规根{在q里只是单的描述一下用PCRE的方法,不涉?qing)配|和正则表达式语法的内容?

使用PCRE主要是用下面的四个函数Q对q四个函数有?jin)?jin)解,使用PCRE库的时候就?x)简单很多?

pcre_compile() /pcre_compile2()

pcre_study()

pcre_exec()

1. pcre_compile() /pcre_compile2()Q?正则表达式在使用之前要经q编译?

pcre *pcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr);

pcre *pcre_compile2(const char *pattern, int options, int *errorcodeptr, const char **errptr, int *erroffset, const unsigned char *tableptr);

~译的目的是正则表辑ּ的pattern转换成PCRE引擎能够识别的结构(struct real_pcreQ?

q没有对~译的过E进行分?

2. pcre_studyQ)(j)Q?/strong>对编译后的正则表辑ּl构(struct real_pcre)q行分析和学?学习(fn)的结果是一个数据结?struct pcre_extra),q个数据l构q同~译后的规则(struct real_pcre)可以一起送给pcre_exec单元q行匚w.

If a compiled pattern is going to be used several times, it is worth spending more time analyzing it in order to speed up the time taken for matching. The function pcre_study() takes a pointer to a compiled pattern as its first argument. If studying the pattern produces additional information that will help speed up matching, pcre_study() returns a pointer to a pcre_extra block, in which the study_data field points to the results of the study.

pcre_studyQ)(j)的引入主要是Z(jin)加速正则表辑ּ匚w的速度.(Z么学?fn)后p加速呢?)q个q是比较有用?可以正则表辑ּ~译,学习(fn)后保存到一个文件或内存?sh)?q样q行匚w的时候效率比较搞.snort中就是这样做?

3. pcre_execQ)(j)Q?/strong>Ҏ(gu)正则表达式到指定的字W串中进行查扑֒匚w,q输出匹配的l果.

The function pcre_exec() is called to match a subject string against a compiled pattern, which is passed in the code argument. If the pattern has been studied, the result of the study should be passed in the extra argument. This function is the main matching facility of the library, and it operates in a Perl-like manner.

4. Snort中如何用PCRE?snort中以插g的Ş式调用PCREq行正则表达式的匚w?

1Q进行正则表辑ּ的初始化?

InitializeDetection--> RegisterRules-->RegisterOneRule-->PCRESetup(Just for OPTION_TYPE_PCRE)->pcre_compile and pcre_study. All will be stored in a structure called PCREInfo in the memory.

2.) 规则的匹配。DetectionCheckRule-->ruleMatch-->ruleMatchInternal-->pcreMatch(OPTION_TYPE_PCRE)->pcre_test-->pcre_exec.

5.~译PCRE on TILERA platform.

1) tar -xjvf pcre-7.9.tar.bz2

2) Modify config.sub to support tile architecture.

We wish to use DE>HOST=tileDE>, but the DE>tileDE> architecture is not yet standard, so may not exist in the DE>config.subDE> file. If necessary, add these lines in the alphabetical list of architectures (typically about 1,100 lines down):

 tile*)
  basic_machine=tile-tilera
  os=-linux-gnu
  ;;
3) Compile PCRE on tile Linux. 
** Start up TILERA card through tile-monitor.
tile-monitor --pci --mount-tile /usr  \
  --mount-tile /bin --mount-tile /sbin --mount-tile /etc --mount-tile /lib \
  --mkdir /mnt/libs --mount /libs-compile /mnt/libs \
  --mkdir /mnt/mde  --mount $TILERA_ROOT /mnt/mde
* ./configure --build=tile  --prefix=/usr  lt_cv_sys_max_cmd_len=262144 --disable-cpp
//~译的时候没有能c++的支持?/pre>
pcre-7.9 configuration summary:
   pcre-7.9 configuration summary:
    Install prefix .................. : /usr
    C preprocessor .................. : gcc -E
    C compiler ...................... : gcc
    C++ preprocessor ................ : g++ -E
    C++ compiler .................... : g++
    Linker .......................... : /usr/bin/ld
    C preprocessor flags ............ :
    C compiler flags ................ : -O2
    C++ compiler flags .............. : -O2
    Linker flags .................... :
    Extra libraries ................. :
    Build C++ library ............... : no
    Enable UTF-8 support ............ : no
    Unicode properties .............. : no
    Newline char/sequence ........... : lf
    \R matches only ANYCRLF ......... : no
    EBCDIC coding ................... : no
    Rebuild char tables ............. : no
    Use stack recursion ............. : yes
    POSIX mem threshold ............. : 10
    Internal link size .............. : 2
    Match limit ..................... : 10000000
    Match limit recursion ........... : MATCH_LIMIT
    Build shared libs ............... : yes
    Build static libs ............... : yes
    Link pcregrep with libz ......... : no
    Link pcregrep with libbz2 ....... : no
    Link pcretest with libreadline .. : no
* make
* make install

4) Compile the PCRE demo code and test PCRE lib on TILERA linux. PCRE 的源文g中提供了(jin)两个demoE序Q一个是比较单的pcredemo.cQ很Ҏ(gu)理解Q另外一个是pcretest.cQ这个比较全面、完整的介绍?jin)pcre库的使用。这两个demo本n是非常好的学习(fn)材料?/pre>
# gcc -o pcredemo pcredemo.c -lpcre
#  ./pcredemo 'cat|dog' 'the cat sat on the mat'
Match succeeded at offset 4
0: cat
No named substrings
# ./pcredemo -g 'cat|dog' 'the dog sat on the cat'
Match succeeded at offset 4
0: dog
No named substrings
Match succeeded again at offset 19
0: cat
No named substrings
//参考资?
PCRE源码文:pcre-7.9/doc/html


肥仔 2009-09-07 21:46 发表评论
]]>vc下zlib~译出现问题http://www.shnenglu.com/woaidongmao/archive/2009/09/07/95489.html肥仔肥仔Mon, 07 Sep 2009 13:45:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95489.htmlhttp://www.shnenglu.com/woaidongmao/comments/95489.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95489.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/95489.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/95489.html原文链接Q?a >http://www.itzhe.cn/news/20080717/178365.html
我刚刚下?jin)一个zlib的源代码Q下载地址Q?a >http://www.zlib.net/zlib123.zipQ用vc打开其中的projects\visualc6下的zlib.dsw工程文g后,q行~译Q就报出?jin)以下的错误Q?
--------------------Configuration: zlib - Win32 LIB ASM Debug--------------------
Assembling...
'ml.exe' 不是内部或外部命令,也不是可q行的程?
或批处理文g?
Error executing c:\windows\system32\cmd.exe.
zlibd.lib - 1 error(s), 0 warning(s)
我找?jin)一下也没发现有“ml.exe”这L(fng)文g?不晓得是哪个地方出的问题啊!源代码是l对没有动过的。希望有对zlib有研I的帮帮忙啊Q先谢过啦!
|友回复:ml.exe 是微软汇~编译器, MASM6 或者以后版?q在PATH 中设|执行\径即? DDK 也是可以?br>|友回复:make line???
|友回复:我已l将MASM6.11安装?jin)也讄了(jin)环境变量,在命令行方式下也能正常的q行ml.exe?jin),但是Z么在vc下还是会(x)报那个错误啊Q?Q?Q?Q我真的快要崩溃啦!希望能告诉我下到底我哪漏掉了(jin)啊!
|友回复:那你强制指定路径试一下。或者把ml相关的几个文件放到vc6的bin目录下?br>|友回复:引用 4 ?unsigned 的回?
那你强制指定路径试一下。或者把ml相关的几个文件放到vc6的bin目录下?
OK!按照你的方式更改后已l不?x)报ml.exe的错误了(jin)Q不q现在又Z(jin)新的问题Q!Q!
当用ml来编译inffas32.asm文gӞ?x)?9个错误!Q!Q在命o(h)行方式下单独~译也会(x)报这39个错误!Q!
具体的错误信息如下:(x)
--------------------Configuration: zlib - Win32 LIB ASM Debug--------------------
Assembling...
Assembling: ..\..\contrib\masmx86\inffas32.asm
..\..\contrib\masmx86\inffas32.asm(65): error A2008: syntax error : .
..\..\contrib\masmx86\inffas32.asm(638): error A2008: syntax error : emms
..\..\contrib\masmx86\inffas32.asm(644): error A2008: syntax error : mm0
..\..\contrib\masmx86\inffas32.asm(647): error A2008: syntax error : mm4
..\..\contrib\masmx86\inffas32.asm(648): error A2008: syntax error : movq
..\..\contrib\masmx86\inffas32.asm(649): error A2008: syntax error : mm5
..\..\contrib\masmx86\inffas32.asm(650): error A2008: syntax error : movq
..\..\contrib\masmx86\inffas32.asm(651): error A2008: syntax error : pxor
..\..\contrib\masmx86\inffas32.asm(657): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(662): error A2008: syntax error : mm6
..\..\contrib\masmx86\inffas32.asm(663): error A2008: syntax error : mm7
..\..\contrib\masmx86\inffas32.asm(665): error A2008: syntax error : psllq
..\..\contrib\masmx86\inffas32.asm(667): error A2008: syntax error : por
..\..\contrib\masmx86\inffas32.asm(670): error A2008: syntax error : pand
..\..\contrib\masmx86\inffas32.asm(671): error A2008: syntax error : eax
..\..\contrib\masmx86\inffas32.asm(672): error A2008: syntax error : movq
..\..\contrib\masmx86\inffas32.asm(677): error A2008: syntax error : mm1
..\..\contrib\masmx86\inffas32.asm(706): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(707): error A2008: syntax error : mm1
..\..\contrib\masmx86\inffas32.asm(708): error A2008: syntax error : ecx
..\..\contrib\masmx86\inffas32.asm(714): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(719): error A2008: syntax error : mm6
..\..\contrib\masmx86\inffas32.asm(720): error A2008: syntax error : mm7
..\..\contrib\masmx86\inffas32.asm(722): error A2008: syntax error : psllq
..\..\contrib\masmx86\inffas32.asm(724): error A2008: syntax error : por
..\..\contrib\masmx86\inffas32.asm(728): error A2008: syntax error : pand
..\..\contrib\masmx86\inffas32.asm(729): error A2008: syntax error : eax
..\..\contrib\masmx86\inffas32.asm(730): error A2008: syntax error : movq
..\..\contrib\masmx86\inffas32.asm(739): error A2008: syntax error : mm1
..\..\contrib\masmx86\inffas32.asm(747): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(748): error A2008: syntax error : mm1
..\..\contrib\masmx86\inffas32.asm(749): error A2008: syntax error : ecx
..\..\contrib\masmx86\inffas32.asm(808): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(809): error A2008: syntax error : ecx
..\..\contrib\masmx86\inffas32.asm(821): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(822): error A2008: syntax error : ecx
..\..\contrib\masmx86\inffas32.asm(1021): error A2008: syntax error : psrlq
..\..\contrib\masmx86\inffas32.asm(1022): error A2008: syntax error : ebp
..\..\contrib\masmx86\inffas32.asm(1024): error A2008: syntax error : emms
Error executing c:\windows\system32\cmd.exe.
example.exe - 39 error(s), 0 warning(s)
希望曄~译qzlib的达人给予帮助!
是不是我的MASM6 版本太高?sh)(jin),所以对汇编的代码不支持啊?Q?Q真的崩溃了(jin)啊!Q!Q!Q?br>|友回复:是你的ml版本太低。这上面出错的都是一些新指o(h)?br>|友回复:引用 6 ?unsigned 的回?
是你的ml版本太低。这上面出错的都是一些新指o(h)?
现在问题解决啦!原来是在~译库的时候应该选win32 lib debug而不是它默认的win32 lib asm debugQ虽然有汇编的代码,但是gq样选了(jin)以后׃?x)编译汇~代码了(jin)哦!呵呵Q感谢这么多位的帮助哈!问题解决QDoneQ?/p>

肥仔 2009-09-07 21:45 发表评论
]]>
Zlib与GZiphttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95486.html肥仔肥仔Mon, 07 Sep 2009 13:27:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95486.htmlhttp://www.shnenglu.com/woaidongmao/comments/95486.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95486.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/95486.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/95486.htmlzlib是一个通用的压~开源库Q提供了(jin)在内存(sh)压羃和解压的函数Q包括对解压后数据的校验。目前版本的zlib只支?span lang="EN-US">deflateҎ(gu)Q但是其它的Ҏ(gu)会(x)被添加进来ƈ且拥有同L(fng)接口?span lang="EN-US">

—?zlib manaul

    deflate法?span lang="EN-US">rfc1951中有详细的说明?span lang="EN-US">

    zlib同时又是一U数据格式,使用zlib库压~后的数据会(x)?span lang="EN-US">deflate数据的头和尾d信息QŞ?span lang="EN-US">zlib格式的数据?span lang="EN-US">

 

   gzip也是一U数据压~格式,可以大体分ؓ(f)头部Q数据部和尾部三个部分,其中头部和尾部主要是一些文档属性和校验信息Q?span lang="EN-US">rfc1952Q,数据部主要是?span lang="EN-US">deflateҎ(gu)压羃得到的数据?span lang="EN-US">
   
    zlib库默认的压羃Ҏ(gu)q不?span lang="EN-US">gzip的,而是zlib的,因此使用zlib压羃得到gzip格式的数据有两种Ҏ(gu)Q?span lang="EN-US">

1. 使用zlib提供?span lang="EN-US">gz***pd函数可以直接把想要的内容写入一个磁?span lang="EN-US">gzip文gQ?

2. 如果惛_内存?sh)生?span lang="EN-US">gzip格式的数据,可以在初始化的时候调?span lang="EN-US">inflateInit2函数Qƈ指定?span lang="EN-US">gzip格式Q代码如下:(x)

   

  z_stream d_stream;
  d_stream
.zalloc = NULL;
  d_stream
.zfree = NULL;
  d_stream
.opaque = NULL;
 
int ret = deflateInit2(&d_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, DEFAULT_WINDOWSIZE, DEFAULT_MEMLEVEL,  Z_DEFAULT_STRATEGY);

 
if (Z_OK != ret)
  {
    printf
("init deflate error\n");
    return
ret;
  }

    之后Q用deflate压羃出来的数据就?span lang="EN-US">gzip的了(jin)?/span>

 



肥仔 2009-09-07 21:27 发表评论
]]>
Zlib与GZiphttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95485.html肥仔肥仔Mon, 07 Sep 2009 13:25:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95485.htmlhttp://www.shnenglu.com/woaidongmao/comments/95485.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/09/07/95485.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/95485.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/95485.htmlzlib

  zlib是提供资料压~之用的函式库,?span lang="EN-US">Jean-loup Gailly?span lang="EN-US">Mark Adler所开发,初版0.9版在1995q?span lang="EN-US">5?span lang="EN-US">1?/st1:chsdate>发表?span lang="EN-US">zlib使用DEFLATE法Q最初是?span lang="EN-US">libpng函式库所写的Q后来普遍ؓ(f)许多软g所使用。此函式库ؓ(f)自由软gQ?span lang="EN-US">zlib授权?span lang="EN-US">

  zlib是用于资料压~的函式库,?span lang="EN-US">Jean-loup Gailly?span lang="EN-US">Mark Adler所开发,是用抽象化?span lang="EN-US">DEFLATE压羃法gzip文g压羃E序。初?span lang="EN-US">0.9版在1995q?span lang="EN-US">5?span lang="EN-US">1?/st1:chsdate>发表Q最初是?span lang="EN-US">libpng函式库所写的Q后来普遍ؓ(f)许多软g所使用。此函式库ؓ(f)自由软gQ?span lang="EN-US">zlib授权?span lang="EN-US">

  截至2007q?span lang="EN-US">3月,zlib是包含在Coverity的美国国土安全部赞助者选择l箋(hu)审查的开源项目?

[~辑本段]

功能

  * 数据?span lang="EN-US">(header) - zlib能用一?span lang="EN-US">gzip数据_(d)zlib数据头或者不使用数据头压~数据?span lang="EN-US">

  通常情况下,数据压羃使用zlib数据_(d)因ؓ(f)q提供错误数据检。当数据不用数据头写入Ӟl果是没有Q何错误检的原始DEFLATE数据Q那么解压羃软g的调用者知道压~数据在什么地方结束?span lang="EN-US">

  gzip数据头比zlib数据头要大,因ؓ(f)它保存(sh)(jin)文g名和其他文gpȝ信息Q事实上q是q泛使用?span lang="EN-US">gzip文g的数据头格式?span style="color: red">注意zlib函式库本w不能创Z?span lang="EN-US">gzip文gQ但是它相当L的通过把压~数据写入到一个有gzip文g头的文g中?span lang="EN-US">

  * - 目前zlib仅支持一?span lang="EN-US">LZ77的变U算法,DEFLATE的算法?span lang="EN-US">

  q个法使用很少的系l资源,对各U数据提供很好的压羃效果。这也是?span lang="EN-US">ZIP案中无一例外的用这个算法。(管zip文g格式也支持几U其他的法Q?span lang="EN-US">

  看v?span lang="EN-US">zlib格式不?x)被扩展使用M其他法Q尽数据头可以有这U可能性?span lang="EN-US">

  * 使用资源 - 函式库提供了(jin)对处理器和内存(sh)用控制的能力

  不同的压~别数值可以指CZ同的压羃执行速度?span lang="EN-US">

  q有内存控制理的功能。这在一些诸如嵌入式pȝq样内存有限制的环境中是有用的?span lang="EN-US">

  * {略 - 压羃可以针对特定cd的数据进行优?span lang="EN-US">

  如果你L使用zlib库压~压~特定类型的数据Q那么可以用有针对性的{略可以提高压羃效率和性能。例如,如果你的数据包含很长的重复数据,那么可以?span lang="EN-US">RLEQ运行长度编码)(j){略Q可能会(x)有更好的l果?span lang="EN-US">

  对于一般的数据Q默认的{略是首选?span lang="EN-US">

  * 错误处理 - 错误可以被发现和跌

  数据混ؕ可以被检(只要数据?span lang="EN-US">zlib或?span lang="EN-US">gzip数据头一赯写入Q参见上面)(j)

  此外Q如果全h点(full-flush pointsQ被写入到压~后的数据流中,那么错误数据是可以被跌的,q且解压~将重新同步C个全h炏V(错误数据的无错恢复被提供Q。全hҎ(gu)术对于在不可靠的通道上的大数据流是很有用的,一些过ȝ数据丢失是不重要的(例如多媒体数据)(j)Q但是徏立太多的全刷新点?x)极大的影响速度和压~?span lang="EN-US">

  * 数据长度 - 对于压羃和解压羃Q没有数据长度的限制

  重复调用库函数允许处理无限的数据块。一些辅助代码(计数变量Q可能会(x)溢出Q但是不影响实际的压~和解压~?span lang="EN-US">

  当压~一个长Q无限)(j)数据?hu)时Q最好写入全h炏V?

[~辑本段]

使用zlib的Y?span lang="EN-US">

  今天Q?span lang="EN-US">zlib是一U事实上的业界标准,以至于在标准文档中,zlib?span lang="EN-US">DEFLATE常常互换使用。数以千计的应用E序直接或间接依?span lang="EN-US">zlib压羃函式?/span>Q?span lang="EN-US">[2]Q包括:(x)

  * Linux核心(j)Q?span lang="EN-US">zlib以实作网l协定的压羃、案系l的压羃以及(qing)开机时解压~自w的核心(j)?span lang="EN-US">

  * libpngQ用?span lang="EN-US">PNG囑Ş格式的一个实玎ͼ?span lang="EN-US">bitmap数据规定?span lang="EN-US">DEFLATE作ؓ(f)压~方法?span lang="EN-US">

  * ApacheQ?span lang="EN-US">zlib实作http 1.1?span lang="EN-US">

  * OpenSSH?span lang="EN-US">OpenSSLQ以zlib辑ֈ最?jng)_加密|络传输?span lang="EN-US">

  * FFmpegQ以zlibdMatroska{以DEFLATE法压羃的多媒体串流格式?span lang="EN-US">

  * rsyncQ以zlib最?jng)_q端同步时的传输?span lang="EN-US">

  * The dpkg and RPM package managers, which use zlib to unpack files from compressed software packages.

  * Subversion ?span lang="EN-US">Git?span lang="EN-US"> CVS 版本控制pȝQ?span lang="EN-US">zlib来压~和q端仓库的通讯量?span lang="EN-US">

  * dpkg?span lang="EN-US">RPM{包理软gQ以zlib解压~?span lang="EN-US">RPM或者其他封包?span lang="EN-US">

  因ؓ(f)其代码的可移植性,宽松的许可以?qing)较(yu)的内存占用Q?span lang="EN-US">zlib在许多嵌入式讑֤中也有应用?span lang="EN-US">

zlib和gzip是一回事Qgzip不过外面多了(jin)一个文件格式,作者都是同一个h?
据说7zip比zlib有更高的压羃比和解压速度,但没有用q?/font>



肥仔 2009-09-07 21:25 发表评论
]]>
Intel TBB:Pipeline,软g水U的威力http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81670.html肥仔肥仔Fri, 01 May 2009 17:53:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81670.htmlhttp://www.shnenglu.com/woaidongmao/comments/81670.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81670.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/81670.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/81670.html阅读全文

肥仔 2009-05-02 01:53 发表评论
]]>
Intel TBB::PipelineQ按序处理数?/title><link>http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81671.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Fri, 01 May 2009 17:53:00 GMT</pubDate><guid>http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81671.html</guid><wfw:comment>http://www.shnenglu.com/woaidongmao/comments/81671.html</wfw:comment><comments>http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/woaidongmao/comments/commentRss/81671.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/woaidongmao/services/trackbacks/81671.html</trackback:ping><description><![CDATA[     摘要: 在上一文?TBB:pipeline,软g水U的威力)最后提Z(jin)几个问题Q我们逐个来看看TBB::Pipeline是怎么解决的?    Z么Pipeline可以保证数据执行的顺?既然TBB归根到底是通过多线E执行Q务,Z么不?x)在d先后两个字符串后Q后d的字W串先被下一个task处理?Pipeline里是不是有一个类gFIFO 先进先出队列之类的东西? &nbs...  <a href='http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81671.html'>阅读全文</a><img src ="http://www.shnenglu.com/woaidongmao/aggbug/81671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/woaidongmao/" target="_blank">肥仔</a> 2009-05-02 01:53 <a href="http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[译]Google C++ Mocking Framework Cheat Sheethttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81669.html肥仔肥仔Fri, 01 May 2009 17:52:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81669.htmlhttp://www.shnenglu.com/woaidongmao/comments/81669.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81669.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/81669.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/81669.html阅读全文

肥仔 2009-05-02 01:52 发表评论
]]>
Google C++ Mocking Framework使用?/title><link>http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81668.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Fri, 01 May 2009 17:50:00 GMT</pubDate><guid>http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81668.html</guid><wfw:comment>http://www.shnenglu.com/woaidongmao/comments/81668.html</wfw:comment><comments>http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/woaidongmao/comments/commentRss/81668.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/woaidongmao/services/trackbacks/81668.html</trackback:ping><description><![CDATA[     摘要: 下蝲Google C++ Mocking FrameworkQ解?..发现它自带了(jin)Google Test的全部源代码Q也是说有?jin)这个那个Google Test׃用去下蝲?jin)注意,Google Mock的编译对~译器的C++支持要求很高Qƈ且需要有tr1的支持?  Linux/Unix下的GCC~译: 注意QGoogle Mock的Readme里说它要?.0版以?不过?..  <a href='http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81668.html'>阅读全文</a><img src ="http://www.shnenglu.com/woaidongmao/aggbug/81668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/woaidongmao/" target="_blank">肥仔</a> 2009-05-02 01:50 <a href="http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Test 框架高使用指南http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81667.html肥仔肥仔Fri, 01 May 2009 17:45:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81667.htmlhttp://www.shnenglu.com/woaidongmao/comments/81667.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81667.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/81667.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/81667.html阅读全文

肥仔 2009-05-02 01:45 发表评论
]]>
使用Google C++ Testing Frameworkq行单元试http://www.shnenglu.com/woaidongmao/archive/2009/05/02/81666.html肥仔肥仔Fri, 01 May 2009 17:44:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81666.htmlhttp://www.shnenglu.com/woaidongmao/comments/81666.htmlhttp://www.shnenglu.com/woaidongmao/archive/2009/05/02/81666.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/81666.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/81666.html阅读全文

肥仔 2009-05-02 01:44 发表评论
]]>
文g载入http://www.shnenglu.com/woaidongmao/archive/2008/06/25/54539.html肥仔肥仔Wed, 25 Jun 2008 03:16:00 GMThttp://www.shnenglu.com/woaidongmao/archive/2008/06/25/54539.htmlhttp://www.shnenglu.com/woaidongmao/comments/54539.htmlhttp://www.shnenglu.com/woaidongmao/archive/2008/06/25/54539.html#Feedback0http://www.shnenglu.com/woaidongmao/comments/commentRss/54539.htmlhttp://www.shnenglu.com/woaidongmao/services/trackbacks/54539.htmlBOOL            LoadFile(const char* file_name, vector<char>& vec_file);

 

BOOL Glob_Fun::LoadFile(const char* file_name, vector<char>& vec_file)
{
    vec_file.clear();
    if ((NULL == file_name))
        return FALSE;
    CFile file;
    char szBuf[1024 * 10] = "", *pTmp = NULL;
    int nRead = 0;
    int file_len = 0;

    if(FALSE == file.Open(file_name,CFile::modeRead))
        return FALSE;

    if(0 >= (file_len=file.GetLength()))
    {
        file.Close();
        return TRUE;
    }
    vec_file.resize(file_len);
    pTmp = &vec_file[0];
    do
    {
        nRead = file.Read(szBuf, sizeof(szBuf));
        memcpy(pTmp, szBuf, nRead);
        pTmp += nRead;
    }while (nRead > 0);
    file.Close();
    return TRUE;
}



肥仔 2008-06-25 11:16 发表评论
]]>
内存搜烦(ch)与解?/title><link>http://www.shnenglu.com/woaidongmao/archive/2008/06/23/54382.html</link><dc:creator>肥仔</dc:creator><author>肥仔</author><pubDate>Mon, 23 Jun 2008 07:43:00 GMT</pubDate><guid>http://www.shnenglu.com/woaidongmao/archive/2008/06/23/54382.html</guid><wfw:comment>http://www.shnenglu.com/woaidongmao/comments/54382.html</wfw:comment><comments>http://www.shnenglu.com/woaidongmao/archive/2008/06/23/54382.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/woaidongmao/comments/commentRss/54382.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/woaidongmao/services/trackbacks/54382.html</trackback:ping><description><![CDATA[<p>char*            MemFind(const void* src_buf, int src_len, const void* find_buf, int find_len);<br>BOOL            ParserMem(const void* src_buf, int src_len, const vector< vector<char> >& vec_par, vector< vector<char> >& vec_result);//---- 多重二进制分?br>BOOL            ParserMem(const void* src_buf, int src_len, const vector<char>& vec_par, vector< vector<char> >& vec_result);//---- 单层二进制分?br>BOOL            ParserMem(const void* src_buf, int src_len, const char* par_buf, vector< vector<char> >& vec_result);//---- 字符分割<br>BOOL            ParserMem(const void* src_buf, int src_len, const char* par_buf, vector<string>& vec_result);//---- 字符分割 <p>  <p>char* Glob_Fun::MemFind(const void* src_buf, int src_len, const void* find_buf, int find_len)<br>{<br>    if ((NULL == src_buf) || (NULL == find_buf)<br>        || (src_len <= 0) || (find_len <= 0)) <br>        return NULL; <p>    char*cp = (char*)src_buf;<br>    char*src_end = (char*)src_buf +  src_len;<br>    char*find_end = (char*)find_buf + find_len;<br>    char*s_src = NULL, *s_find = NULL;<br>    while (cp < src_end)<br>    {<br>        s_src = cp;<br>        s_find = (char*)find_buf;<br>        while (s_src < src_end && s_find < find_end && *s_src == *s_find)<br>            ++s_src, ++s_find;<br>        if (s_find == find_end)<br>            return(cp);<br>        ++cp;<br>    }<br>    return(NULL);<br>} <p>BOOL Glob_Fun::ParserMem(<br>                         const void*                    src_buf, <br>                         int                            src_len, <br>                         const vector< vector<char> >&    vec_par, <br>                         vector< vector<char> >&        vec_result)<br>{<br>    if ((NULL == src_buf) || (src_len <= 0) || vec_par.size() <= 0) <br>        return FALSE;<br>    for (size_t t = 0; t < vec_par.size(); ++t)<br>    {<br>        if(0 >= vec_par[t].size())<br>            return FALSE;<br>    } <p>    vec_result.clear(); <p>    vector<char> vec_tmp;<br>    BOOL bMatched = FALSE;<br>    int nParCount = vec_par.size();<br>    int nParTick = 0;<br>    char*cp = (char*)src_buf;<br>    char*src_end = (char*)src_buf +  src_len;<br>    int  nParLen = (int)vec_par[0].size();<br>    char*find_buf = (char*)&(vec_par[0][0]);<br>    char*find_end = find_buf + nParLen;<br>    char*s_src = NULL, *s_find = NULL; <p>    while (cp < src_end)<br>    {<br>        s_src = cp;<br>        s_find = (char*)find_buf;<br>        while (s_src < src_end && s_find < find_end && *s_src == *s_find)<br>            ++s_src,++s_find;<br>        if (s_find == find_end)<br>        {    <br>            bMatched = TRUE;<br>            cp += nParLen;<br>            vec_result.push_back(vec_tmp);<br>            vec_tmp.clear();<br>            ++nParTick;<br>            if(nParCount == nParTick)<br>                nParTick = 0;<br>            nParLen = (int)(vec_par[nParTick].size());<br>            find_buf = (char*)&(vec_par[nParTick][0]);<br>            find_end = find_buf + nParLen;             <br>        }<br>        else<br>        {<br>            vec_tmp.push_back(*cp);<br>            ++cp;<br>        }<br>    }<br>    if(TRUE == bMatched)<br>        vec_result.push_back(vec_tmp);<br>    return(bMatched);<br>} <p>BOOL Glob_Fun::ParserMem(<br>                         const void*                    src_buf, <br>                         int                            src_len, <br>                         const vector<char>&            vec_par, <br>                         vector< vector<char> >&        vec_result)<br>{<br>    if ((NULL == src_buf) || (src_len <= 0) || vec_par.size() <= 0) <br>        return FALSE;<br>    vec_result.clear(); <p>    vector<char> vec_tmp;<br>    BOOL bMatched = FALSE;<br>    char*cp = (char*)src_buf;<br>    char*src_end = (char*)src_buf +  src_len;<br>    int  nParLen = (int)vec_par.size();<br>    char*find_buf = (char*)&(vec_par[0]);<br>    char*find_end = find_buf + nParLen;<br>    char*s_src = NULL, *s_find = NULL; <p>    while (cp < src_end)<br>    {<br>        s_src = cp;<br>        s_find = (char*)find_buf;<br>        while (s_src < src_end && s_find < find_end && *s_src == *s_find)<br>            ++s_src, ++s_find;<br>        if (s_find == find_end)<br>        {    <br>            bMatched = TRUE;<br>            cp += nParLen;<br>            vec_result.push_back(vec_tmp);<br>            vec_tmp.clear();         <br>        }<br>        else<br>        {<br>            vec_tmp.push_back(*cp);<br>            ++cp;<br>        }<br>    }<br>    if(TRUE == bMatched)<br>        vec_result.push_back(vec_tmp);<br>    return(bMatched);<br>} <p>BOOL Glob_Fun::ParserMem(<br>                         const void*                    src_buf, <br>                         int                            src_len, <br>                         const char*                    par_buf, <br>                         vector< vector<char> >&        vec_result)<br>{<br>    if ((NULL == src_buf) || (src_len <= 0) || strlen(par_buf) <= 0) <br>        return FALSE;<br>    vec_result.clear(); <p>    vector<char> vec_tmp;<br>    BOOL bMatched = FALSE;<br>    char*cp = (char*)src_buf;<br>    char*src_end = (char*)src_buf +  src_len;<br>    int  nParLen = strlen(par_buf);<br>    char*find_buf = (char*)par_buf;<br>    char*find_end = find_buf + nParLen;<br>    char*s_src = NULL, *s_find = NULL; <p>    while (cp < src_end)<br>    {<br>        s_src = cp;<br>        s_find = (char*)find_buf;<br>        while (s_src < src_end && s_find < find_end && *s_src == *s_find)<br>            ++s_src, ++s_find;<br>        if (s_find == find_end)<br>        {    <br>            bMatched = TRUE;<br>            cp += nParLen;<br>            vec_result.push_back(vec_tmp);<br>            vec_tmp.clear();         <br>        }<br>        else<br>        {<br>            vec_tmp.push_back(*cp);<br>            ++cp;<br>        }<br>    }<br>    if(TRUE == bMatched)<br>        vec_result.push_back(vec_tmp);<br>    return(bMatched);<br>} <p>BOOL Glob_Fun::ParserMem(<br>                         const void*                    src_buf, <br>                         int                            src_len, <br>                         const char*                    par_buf, <br>                         vector<string>&                vec_result)<br>{<br>    if ((NULL == src_buf) || (src_len <= 0) || strlen(par_buf) <= 0) <br>        return FALSE;<br>    vec_result.clear(); <p>    string vec_tmp;<br>    BOOL bMatched = FALSE;<br>    char*cp = (char*)src_buf;<br>    char*src_end = (char*)src_buf +  src_len;<br>    int  nParLen = strlen(par_buf);<br>    char*find_buf = (char*)par_buf;<br>    char*find_end = find_buf + nParLen;<br>    char*s_src = NULL, *s_find = NULL; <p>    while (cp < src_end)<br>    {<br>        s_src = cp;<br>        s_find = (char*)find_buf;<br>        while (s_src < src_end && s_find < find_end && *s_src == *s_find)<br>            ++s_src, ++s_find;<br>        if (s_find == find_end)<br>        {    <br>            bMatched = TRUE;<br>            cp += nParLen;<br>            vec_result.push_back(vec_tmp);<br>            vec_tmp.clear();         <br>        }<br>        else<br>        {<br>            vec_tmp.push_back(*cp);<br>            ++cp;<br>        }<br>    }<br>    if(TRUE == bMatched)<br>        vec_result.push_back(vec_tmp);<br>    return(bMatched);<br>} <img src ="http://www.shnenglu.com/woaidongmao/aggbug/54382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/woaidongmao/" target="_blank">肥仔</a> 2008-06-23 15:43 <a href="http://www.shnenglu.com/woaidongmao/archive/2008/06/23/54382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.cqdmn.com.cn" target="_blank">þþƷһպ</a>| <a href="http://www.wannianl.cn" target="_blank">ձһƷþþþӰԺ</a>| <a href="http://www.ttkanshu.cn" target="_blank">þrоƷƵ</a>| <a href="http://www.0795fcw.cn" target="_blank">þ޾ƷĻ</a>| <a href="http://www.aylzys.cn" target="_blank">þۺϹɫ88þþƷۺ </a>| <a href="http://www.qqtushu.cn" target="_blank">AƷһþ</a>| <a href="http://www.xspree.cn" target="_blank">avԾþþþa鶹</a>| <a href="http://www.zghzmj.com.cn" target="_blank">뾫ƷþɪӰ</a>| <a href="http://www.tzcn86.cn" target="_blank">Ůͬþ</a>| <a href="http://www.9405.com.cn" target="_blank">ղƷaëƬþ </a>| <a href="http://www.qvnb.cn" target="_blank">þۺɫ֮þۺ</a>| <a href="http://www.zhxjk.cn" target="_blank">þþƷ99þþ㽶</a>| <a href="http://www.qj37c.cn" target="_blank">Ʒһþ</a>| <a href="http://www.zfse4m.cn" target="_blank">ƷŮþþþavˬ</a>| <a href="http://www.88ye.cn" target="_blank">ۺϾƷþ</a>| <a href="http://www.scjyzj.cn" target="_blank">þþþù</a>| <a href="http://www.guwanwei.cn" target="_blank">ۺһ˾þþƷ </a>| <a href="http://www.xsubmitter.cn" target="_blank">av˾þۺɫ</a>| <a href="http://www.bubang.com.cn" target="_blank">ѾƷþ</a>| <a href="http://www.jsfkf.cn" target="_blank">þþƷþһ</a>| <a href="http://www.ding-u.cn" target="_blank">þþAVҰ </a>| <a href="http://www.yuyoo.com.cn" target="_blank">þĻһ</a>| <a href="http://www.jyran.cn" target="_blank">Ʒŷþþþ޹ </a>| <a href="http://www.567uu.cn" target="_blank">99þùۺϾƷŮͬͼƬ</a>| <a href="http://www.vqcj.cn" target="_blank">˾þô߽av</a>| <a href="http://www.nn75.cn" target="_blank">ŷִִþþ</a>| <a href="http://www.enikl.cn" target="_blank">þùƷ77777</a>| <a href="http://www.990w.cn" target="_blank">þþƷһ</a>| <a href="http://www.jddy.net.cn" target="_blank">ëƬþþþþùëƬ</a>| <a href="http://www.gqfsm.cn" target="_blank">ŷþһ</a>| <a href="http://www.yxwelding.com.cn" target="_blank">þsmȤ</a>| <a href="http://www.594n.cn" target="_blank">þþþavרˮ</a>| <a href="http://www.ylog.cn" target="_blank">þþþþһ</a>| <a href="http://www.phatmedia.cn" target="_blank">ܻƺ۵վþmimiɫ</a>| <a href="http://www.xsylsh.cn" target="_blank">ɫݺݾþۺ</a>| <a href="http://www.ixibai.cn" target="_blank">ɫþþۺƷ</a>| <a href="http://www.peopleim.cn" target="_blank">www.þ.com</a>| <a href="http://www.mianfeiwg.cn" target="_blank">þAVԴվ</a>| <a href="http://www.kdplastics.cn" target="_blank">þþƷ</a>| <a href="http://www.jzqyc.com.cn" target="_blank">Ʒþþþþۺձ</a>| <a href="http://www.tvauto.cn" target="_blank">ŷƷ˿þþĻ </a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>