資源簡介
環境:vc6
基于對話框,在CEDIT框中實現進制間轉換,也就是實現轉換并且顯示到CEDIT控件上。
已實現的功能:二進制與十六進制字符串之間的轉換。
未實現的功能:二進制與ASCII、十六進制與ASCII字符串之間的轉換。
未實現的原因:對于可見字符如‘0’-‘9’‘a’-‘z’等的實現比較簡單,但是對于不可見字符如0x99, 0x00等在CEdit中顯示就是一個問題。
所以也希望知道如何實現的大牛指點。
聯系:zhilimingmei@163.com

代碼片段和文件信息
//?Conver.cpp:?implementation?of?the?CConver?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“HexDemo.h“
#include?“Conver.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CConver::CConver()
{
}
CConver::~CConver()
{
}
void?CConver::HexToBin(char?*?dest?const?char?*?src?long?srclen)
{
char?*?srcBuf?*SRC?*MID?*?midBuf?*p?binBuf[10]?midBinBuf[10];
int?n?i;
if?((SRC?=?new?char[srclen?+?1])?==?NULL?||
(MID?=?new?char[srclen?+?1])?==?NULL)
return;
srcBuf?=?SRC;
midBuf?=?MID;
srcBuf[srclen]?=?0;
memset(midBuf?0?srclen?+?1);
memcpy(srcBuf?src?srclen);
n?=?0;
for?(p?=?strtok(srcBuf?“?\t\n\r“);?p?!=?NULL;?p?=?strtok(NULL?“?\t\n\r“))
midBuf[n++]?=?(unsigned?char)strtoul(p?0?16);
memset(binBuf?0?10);
memset(midBinBuf?0?10);
dest[0]?=?0;
if?(n?>?0)?{
for?(i?=?0;?i? {
ultoa((unsigned?long)midBuf[i]?&?0x000000ff?midBinBuf?2);
sprintf(binBuf?“%08s?“?midBinBuf);
strcat(dest?binBuf);
}
}
delete?SRC;
delete?MID;
}
void?CConver::BinToHex(char?*?dest?const?char?*?src?long?srclen)
{
char?*?srcBuf?*SRC?*midBuf?*MID?*p?hex[4];
unsigned?char?ch;
int?i?j?k?n?num?remain;
if?((SRC?=?new?char[srclen?+?1])?==?NULL?||
(MID?=?new?char[srclen?+?1])?==?NULL)
return;
srcBuf?=?SRC;
midBuf?=?MID;
srcBuf[srclen]?=?0;
memcpy(srcBuf?src?srclen);
memset(midBuf?0?srclen?+?1);
n?=?0;
for?(p?=?srcBuf;?*p;?p++)?{?//?析出正常的0/1
if?(*p?==?‘0‘?||?*p?==?‘1‘)?{
midBuf[n++]?=?*p?==?‘1‘;
}
}
num?=?n?/?8;
k?=?0;
memset(hex?0?4);
dest[0]?=?0;
for?(i?=?0;?i? {
ch?=?0;
for?(j?=?0;?j?8;?j++)
{
ch?|=?midBuf[k++];
if?(j?!=?7)
{
ch?=?ch?<1;
}
}
sprintf(hex?“%02x?“?ch);
strcat(dest?hex);
}
if?((remain?=?n?%?8)?!=?0)
{
ch?=?0;
for?(i?=?0;?i? {
ch?|=?midBuf[k++];
if?(j?!=?remain?-?1)
ch?=?ch<<1;
}
sprintf(hex?“%02x?“?ch);
strcat(dest?hex);
}
delete?SRC;
delete?MID;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2400??2011-04-29?16:47??HexDemo\Conver.cpp
?????文件????????616??2011-04-29?09:16??HexDemo\Conver.h
?????文件??????20996??2011-04-29?16:39??HexDemo\HexDemo.aps
?????文件???????1251??2011-04-29?16:47??HexDemo\HexDemo.clw
?????文件???????2077??2011-04-29?16:47??HexDemo\HexDemo.cpp
?????文件???????4298??2011-04-29?16:47??HexDemo\HexDemo.dsp
?????文件????????537??2011-04-29?16:47??HexDemo\HexDemo.dsw
?????文件???????1335??2011-04-29?16:47??HexDemo\HexDemo.h
?????文件??????41984??2011-04-29?16:40??HexDemo\HexDemo.ncb
?????文件??????55808??2011-04-29?16:40??HexDemo\HexDemo.opt
?????文件???????1696??2011-04-29?16:47??HexDemo\HexDemo.plg
?????文件???????5675??2011-04-29?16:47??HexDemo\HexDemo.rc
?????文件???????5603??2011-04-29?16:47??HexDemo\HexDemoDlg.cpp
?????文件???????1486??2011-04-29?16:47??HexDemo\HexDemoDlg.h
?????文件??????55808??2011-04-29?16:39??HexDemo\parDemo.opt
?????文件???????3597??2011-04-29?16:47??HexDemo\ReadMe.txt
?????文件???????1078??2011-04-28?09:36??HexDemo\res\HexDemo.ico
?????文件????????399??2011-04-29?16:47??HexDemo\res\HexDemo.rc2
?????文件????????869??2011-04-29?16:47??HexDemo\resource.h
?????文件????????209??2011-04-29?16:47??HexDemo\StdAfx.cpp
?????文件???????1054??2011-04-28?09:36??HexDemo\StdAfx.h
?????目錄??????????0??2011-04-29?16:47??HexDemo\res
?????目錄??????????0??2011-04-29?16:47??HexDemo
-----------?---------??----------?-----??----
???????????????208776????????????????????23
評論
共有 條評論