- 热门文章:
- · 浅谈指针
- · 我的COM学习笔记
- · C++学习历程
- · C++的历史纪实
- · const的思考
- · Tuples Herb Sutter(陶章志译)
- · 浅析C++里面的宏
- · WTL体系结构(1)
- · C++的程序设计典范
- · C++设计目标和原则
- · 测试2个类型相同的方法
- · 计算cpu速度的小程序
上一篇:MIME之Base64编解码 >>
MIME之Quoted-Printable编解码
Quoted-Printable也是MIME邮件中常用的编码方式之一。同Base64一样,它也将输入的字符串或数据编码成全是ASCII码的可打印字符串。
Quoted-Printable编码的基本方法是:输入数据在33-60、62-126范围内的,直接输出;其它的需编码为“=”加两个字节的HEX码(大写)。为保证输出行不超过规定长度,可在行尾加“=\r\n”序列作为软回车。
int EncodeQuoted(const unsigned char* pSrc, char* pDst, int nSrcLen, int nMaxLineLen) { int nDstLen; // 输出的字符计数 int nLineLen; // 输出的行长度计数 nDstLen = 0; nLineLen = 0; for (int i = 0; i < nSrcLen; i++, pSrc++) { // ASCII 33-60, 62-126原样输出,其余的需编码 if ((*pSrc >= ´!´) && (*pSrc <= ´~´) && (*pSrc != ´=´)) { *pDst++ = (char)*pSrc; nDstLen++; nLineLen++; } else { sprintf(pDst, "=%02X", *pSrc); pDst += 3; nDstLen += 3; nLineLen += 3; } // 输出换行? if (nLineLen >= nMaxLineLen - 3) { sprintf(pDst, "=\r\n"); pDst += 3; nDstLen += 3; nLineLen = 0; } } // 输出加个结束符 *pDst = ´\0´; return nDstLen; }Quoted-Printable解码很简单,将编码过程反过来就行了。
int DecodeQuoted(const char* pSrc, unsigned char* pDst, int nSrcLen) { int nDstLen; // 输出的字符计数 int i; i = 0; nDstLen = 0; while (i < nSrcLen) { if (strncmp(pSrc, "=\r\n", 3) == 0) // 软回车,跳过 { pSrc += 3; i += 3; } else { if (*pSrc == ´=´) // 是编码字节 { sscanf(pSrc, "=%02X", pDst); pDst++; pSrc += 3; i += 3; } else // 非编码字节 { *pDst++ = (unsigned char)*pSrc++; i++; } nDstLen++; } } // 输出加个结束符 *pDst = ´\0´; return nDstLen; }
[相关资源]
首次发布: 2003-06-23
最后修订: 2003-06-23
下一篇:浅谈指针 >>
相关文章:
- · Union的迷思
- · 小技巧:一个工具条内放多排按钮
- · 闲言碎语话编程
- · 解析#pragma指令
- · 解析VC++6中的指针
- · 深度解析VC中的消息(上)
- · 数据结构学习(C++)——稀疏矩阵(十字链表【2】)
- · 数据结构学习(C++)——栈和队列(定义和实现)
- · 四则运算实现
- · 为什么应该升级到Struts 1.1?
- · 深度解析VC中的消息(中)
- · 恶草丛生的阴暗角落---虚拟机制(上)
- · 数据结构学习(C++)——栈应用(表达式求值)
- · 解除心头的困惑--纯虚函数
- · 快捷方式的函数
- · WTL体系结构(2)
- · 恶草丛生的阴暗角落---虚拟机制(下)
- · 深度解析VC中的消息(下)
- · 数据结构学习(C++)——队列应用(事件驱动模拟)
- · 新手对COM的认识及疑惑
- · 全面解读WM_NOTIFY
- · 开发集成Microsoft Visual Basic for Application的应用系统(一)
- · 浅谈 MFC 的子类化机制和该机制的一个应用(1)
- · 深度剖析消息反射机制
- · 浅谈 MFC 的子类化机制和该机制的一个应用(2)
- · 我的CLog的实现
- · Hello World by Microsoft Speech SDK 5.1
- · 初级X编程2
- · 彻底粉碎“指针与数组的困惑”(上)
- · ADSL组建局域网快捷方案
- · ADSL组建局域网快捷方案
- · 形形色色的自定义消息(上)
- · 数据结构学习(C++)——线性链式结构总结(代后记)【1】
- · vc入门宝典(九)
- · 形形色色的自定义消息(下)
- · C++中的预处理(上)
- · 非常时期突现网络办公的魅力!
- · asp_dll
