• 大小: 29KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: C/C++
  • 标签: MFC  CEDIT  VC6  进制转换  

资源简介

环境: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


评论

共有 条评论