尝试编解码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',是如何写出来的.

posted @   zjh6  阅读(18)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示