社区
界面
帖子详情
也求BMP转ASCII源代码,急!!!
nkzgj
2003-09-02 07:02:18
那位大哥能发一份给我,十分感谢!
...全文
61
7
打赏
收藏
也求BMP转ASCII源代码,急!!!
那位大哥能发一份给我,十分感谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nkzgj
2003-09-03
打赏
举报
回复
谢谢Semigod,能否发给小弟一份编码的代码
我的邮箱nkzgj@sina.com
Semigod
2003-09-03
打赏
举报
回复
BMP转ASCII?其实就是将二进制数据进行Base64编码,很简单的。要base64编码代码的话可以给你
crazyeagle
2003-09-03
打赏
举报
回复
to: Semigod()
能把你的代码给贴出来吗?
借楼主的地方.我也想学习一下!!!
triout
2003-09-03
打赏
举报
回复
BOOL CVIZip::Base64DeCode(BYTE* strSrc,UINT len,CString &strDst,CString strBase64Chars)
{
strDst.Empty();
if(strBase64Chars=="")
strBase64Chars=m_strDefaultBase64Chars;
else if(!TestBase64CharsOK(strBase64Chars))
return FALSE;
int srcLen;
char ch0=0,ch1=0,ch2=0,ch3=0;
CString tmp;
srcLen=len;//strSrc.GetLength();
if(srcLen%4!=0)
return FALSE;
if(srcLen==0)
return TRUE;
try
{
for(int i=0;i<srcLen-4;i+=4)
{
ch0=strBase64Chars.Find(strSrc[i]);//.GetAt(i));
ch1=strBase64Chars.Find(strSrc[i+1]);//.GetAt(i+1));
ch2=strBase64Chars.Find(strSrc[i+2]);//.GetAt(i+2));
ch3=strBase64Chars.Find(strSrc[i+3]);//.GetAt(i+3));
if(ch0==-1||ch1==-1||ch2==-1||ch3==-1)
return FALSE;
ch0=(ch0<<2)+(ch1>>4);
ch1=((ch1&15)<<4)+(ch2>>2);
ch2=((ch2&3)<<6)+ch3;
tmp.Format("%c%c%c",ch0,ch1,ch2);
strDst.Append(tmp);
}
ch0=strBase64Chars.Find(strSrc[i]);//.GetAt(i));
ch1=strBase64Chars.Find(strSrc[i+1]);//.GetAt(i+1));
ch2=strBase64Chars.Find(strSrc[i+2]);//.GetAt(i+2));
ch3=strBase64Chars.Find(strSrc[i+3]);//.GetAt(i+3));
if(ch0==-1||ch1==-1)
return FALSE;
ch0=(ch0<<2)+(ch1>>4);
if(ch2!=-1)
ch1=((ch1&15)<<4)+(ch2>>2);
else if(strSrc[i+2]!='=')
return FALSE;
if(ch3!=-1)
ch2=((ch2&3)<<6)+ch3;
else if(strSrc[i+3]!='=')
return FALSE;
if(ch2==-1)
tmp.Format("%c",ch0);
else if(ch3=-1)
tmp.Format("%c%c",ch0,ch1);
else
tmp.Format("%c%c%c",ch0,ch1,ch2);
strDst.Append(tmp);
}
catch(...)
{
return FALSE;
}
return TRUE;
}
triout
2003-09-03
打赏
举报
回复
strBase64Chars为64字符的基本字符,通常是:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
但也可以根据你自己的情况使用其他的字符编码或把编码顺序打乱。
要注意的是:
1——
源的长度不是3的倍数时,这时会产生两个或一个补充字符,这个补充字符常用=,你也可以使用其他的字符,但一定不能是基本字符之一
2——
解码时使用的基本字符及其顺序必须与编码时使用的完全一样,否则会出现错误。
下面的是我的解码程序,有错误,没有调试,你你要修改的是返回字符串应该也是BYTE*,而且在调用前分配了足够的空间。
triout
2003-09-03
打赏
举报
回复
哦?我还以为你是其他的目的呢。
转换方法很简单:
BOOL CVIZip::Base64EnCode(BYTE* strSrc,UINT len,CString &strDst,CString strBase64Chars)
{
strDst.Empty();
if(strBase64Chars=="")
strBase64Chars=m_strDefaultBase64Chars;
else if(!TestBase64CharsOK(strBase64Chars))
return FALSE;
int srcLen;
CString strTmpSrc,tmp;
unsigned char ch0=0,ch1=0,ch2=0,ch3=0;
srcLen=len;//strSrc.GetLength();
if(srcLen==0)
return TRUE;
try
{
for(int i=0;i<srcLen-3;i+=3)
{
ch0=strSrc[i];//.GetAt(i);
ch1=strSrc[i+1];//.GetAt(i+1);
ch2=strSrc[i+2];//.GetAt(i+2);
ch3=ch2&63;
ch2=((ch2>>6)+((ch1&15)<<2))&63;
ch1=((ch1>>4)+((ch0&3)<<4))&63;
ch0=(ch0>>2)&63;
tmp.Format("%c%c%c%c",strBase64Chars.GetAt(ch0),strBase64Chars.GetAt(ch1),strBase64Chars.GetAt(ch2),strBase64Chars.GetAt(ch3));
strDst.Append(tmp);
}
if(i>srcLen-3)
{
ch0=strSrc[i];//.GetAt(i);
if(i-srcLen==-2)
ch1=strSrc[i+1];//.GetAt(i+1);
else
ch1=0;
ch2=0;
ch3=0;
ch2=((ch2>>6)+((ch1&15)<<2))&63;
ch1=((ch1>>4)+((ch0&3)<<4))&63;
ch0=(ch0>>2)&63;
tmp.Format("%c%c%c=",strBase64Chars.GetAt(ch0),strBase64Chars.GetAt(ch1),((i-srcLen==-2)?strBase64Chars.GetAt(ch2):'='));
strDst.Append(tmp);
}
}
catch(...)
{
return FALSE;
}
return TRUE;
}
tolixiaohui
2003-09-02
打赏
举报
回复
好象有函数可以读的?
学习。。。。。
bmp
2txt
源代码
BMP
2TXT
源代码
是一个小型程序,它能够将位图(
BMP
)图像
转
换为纯文本格式,这样的
转
换在某些特定的场景下非常有用,比如在没有图形显示能力的终端或者低带宽通信中。这个程序的核心是利用字符来模拟图像的颜色和形状...
信息加密——基于
BMP
位图的信息隐藏算法
源代码
在本文中,我们将深入探讨基于
BMP
位图的信息隐藏算法,并结合提供的
源代码
文件"InfoHidden.c"和"InfoHidden.h"进行分析。信息隐藏是一种技术,用于在看似普通的数据中嵌入秘密信息,通常用于版权保护、数字水印以及...
BMP
图像
转
换为16进制数据
针对单片机开发的16位TFT显示频的图像显示问题。 本软件可将 分辨率在320*240以下的
BMP
图像
转
换为 单片机可用的16进制数据格式。 可进行自己手画,也可以直接打开图片文件,目前只支持
BMP
格式
C#实现的
ASCII
Art图片生成
转
换器控件
源代码
本项目"**C#实现的
ASCII
Art图片生成
转
换器控件
源代码
**"提供了一个独特的方式,允许开发者将常见的静态图像(如
BMP
或JPG)
转
换为
ASCII
艺术作品,并且可以直接集成到ASP.NET应用程序中,为网站增添一种别具一格的...
ppm图片格式
转
换为
bmp
在压缩包中的"40564353ppm2
bmp
_source"可能是
源代码
文件,包含了实现上述
转
换功能的函数或类。通过分析这个
源代码
,你可以更具体地了解
转
换过程的实现细节,例如如何处理不同颜色深度的图像,以及在内存中如何组织和...
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章