资源简介
环境: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 < n; 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 < num; 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 < remain; 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
相关资源
- 基于MFC的图书管理系统
- 箱子求解V2.0C++/MFC)
- MFC写的画图板类似Windows自带的画图
- 五子棋(棋盘)(MFC编写)
- 基于vc6开发的计算器
- 基于OpenCV和MFC的手工量测同名点程序
- mfc下导出listctrl数据到excel表格
- opelgl基于vc的mfc写的粒子烟花效果源代
- 在线考试系统VC++MFC
- 用mfc实现的计算器
- mfc推箱子代码
- vc6显示行号包含注册码VC6LineNumberAdd
- MSDN 和VC6.0完全版
- VC++就业培训宝典之MFC视频教程及pdf
- MFC 自适应不规则按钮类
- 适用于MFC/VC(VC6.0版本)自绘groupbox
- WeTalk.zip
- MFC颜色全,类型全的简易画板
- VC++MFC制作的画图工具
- mfc二叉树的实现,涉及到增加节点等
- VC++6.0_MFC基于对话框简单计算器设计
- 打不开winresrc.h的解决方法
- mfc c++版网络爬虫
- 语音信号MFCC特征提取
- 四国争霸 2.0.4.7 作蔽器&源代码
- 考勤管理系统MFC272434
- VC6.0编写的教师课堂随机点名小程序
- mfc 实现简单绘制矩形 圆形……
- 音乐播放器mfc.doc
- 最小生成树MFC
评论
共有 条评论