尝试编解码base64,也不知对不对
mht文件默认是utf8格式的.所以,先要转国标.
 这也是测试成功,实际开始总是出错的原因.总要记住编码.另一个经验就是,以后遇见复杂的东西,先将其各种特例都搞出来,然后举一两个,先都分别测试,或者搞个实验.只要这个实验成功了,正式情况下,就非常容易成功.
 先列举出参考地址:
 地址1
 地址2
 地址3
 主要是c++基础不好,原来尽是看书,没有写过.现在都是在补基础.
 编译错误:
 error C2628,允许如型,返回值应放在<,这里>,
 表2,重定义.复制时忘记了改.
 串是常量,不能直接通过索引修改.表['=']=f是不对的.
 这里列举几点经验:
//符[]=>串,都可以直接赋值,即可,=>串,直接赋值,符[]=>也直接赋值
//符*转常符*,常符*=>,常转<符*>(常针)
//串转符*,借常符*,因为串本来就是固定的
//详细的在下面图中.
还得多比较比较,参考链接在此,在此,有空多看看
 这里,四种转换总结.串,符*,常符*,符[]
 
 串转符*,还可以,strcpy().串转符[],还可以copy().,见上面两个参考地址.
 先暂时到此.还有很多编译错误.
 编译错误:无法将符->串.用串 a;a+=符; 未知重写说明符:未引入相关cpp文件.
 刚刚是编译时错误,待会一大堆运行时错误.慢慢看嘛.
 以后编译时,将编译错误,运行时错误记录下来.多看看.
 解表,开始用串来实现.但串里面不能包含'\0'符,所以用符[]实现.由此得出.串里面是可以包含二进制的,只要没有'0',很方便.
 这次写提取mht软件心得:一个大类,管理两个子类,而这两个子类共用一个成员,这时可以用全局静态变量.这也是为什么其他语言有模块的原因,只有全局变量最方便,其他都各有各的毛病.
 全局变量其实很好用,有时非常方便,比单件安逸多了,我就不知道这些人为什么不用?
 这次主要用大流冲来干活,其打开方式为ios::二进制,最重要的方法是读(&地址,大小),由于是二进制,我得处理讨厌的'\r\n'问题,不处理的话,直接打开文本文件,得不到正确的计数,写二进制也是用读,只是现在用二进制的地方少.所以要多备注.
 用系统的流处理问题,就是老是要清理一下.所以就在置(针)的时候都清理一下.难得折腾.这个大流冲,还得多用用,看看,有没有其他问题
 到符的时候,要未取两个,一个是'\n',一个是'\r'.都得自己处理.其实也不麻烦.二进制时的空行的表现,就是新行行首为'\r'.这样只需要右移2个就可以了.然后继续判断.
 以后写类,凡是外部使用的都公,其余细节啥的都私.这样,一看就知道用法.还有每个类得加上测试与用法.测试专门用一个文件夹装着.
 类中的函数,基本上都是一个当一个函数.当一下就是一个函数,对一下又是一个函数.当当当对对对.
 写二串,写二进制串与写串一样,只是标记一下为二进制就行了.很少写二进制,这次居然一下就写成功了.
 这次写base64,练习了位运算.以前很少用的位运算.
串 a;a+=加表[c>>2];a+=加表[(c<<4|d>>4)&h];
我们来看,这里,c>>2,表面上是右移2位,实质上是左移6位.取出最左边6位,c再左移4位,是因为下个数要4位.所以左移.d右移4位,是取上4位. 同理接着的,就是下个符只2位,所以左移2,然后右移6位,得到最后2位.对不对.
 编码还没有测试.解码的时候,最重要的是开始是串,所以得到的长度是64,而不是256,所以总是解码不成功.编码有空再来.
 还写了个好时间.
 这次花了几天时间写了个提取程序.以后就有经验教训了.还是很值得的.开始几天狂写.最后是,先花一天,先是解决编译时错误,再花一天,解决运行时错误.当然,我是小白.不然,别人不会像我这样慢.
 基.编码(符*,整 长度),注意,编码时,解码的每个符,必须是正 符.以前都很少用到正 符.
 编码参数为符*,长度.因为编译时确定不了文件的大小.不能用串作参数的原因是串遇见’\0’就没了.
 现在,要思考为什么二进制写的时候,明明有'\0',是如何写出来的.
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号