• 大小: 39KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-26
  • 语言: 其他
  • 标签: 计算器  大整数库  

资源简介

实现超大整数的加减乘除,模乘模幂。配上窗口,很美观,像系统自带的那么方便。

资源截图

代码片段和文件信息

//
//
//

#include “stdafx.h“
#include “common.h“

S32 input(CString &m_strTemp U32 *pwT)
{
/************************************************************************/
S32 i = 0;
U8  ByteBuf[4 *     BNLEN] = {0};
S8  CharBuf[4 * 2 * BNLEN] = {0};
/************************************************************************/

i = m_strTemp.GetLength();
m_strTemp.MakeReverse();

if ( i >= 4 * 2 * (BNLEN - 1) || i == 0)
{
return 0;
}
else
{
strncpy(CharBuf m_strTemp.GetBuffer(0) i);

if (CharToByte(CharBuf ByteBuf i) == 1)
{
memcpy(pwT ByteBuf i / 2 + 1);
m_strTemp.MakeReverse();
return 1;
}
else
{
m_strTemp.MakeReverse();
return 0;
}

}




}




S32 CharToByte(S8 *pCharBuf U8 *pByteBuf S32 nCharLen)
{
/************************************************************************/
S32 i = 0;
S32 j = 0;
U8  hdata = 0;
U8  ldata = 0;
/************************************************************************/

i = (nCharLen % 2) ? (nCharLen / 2 + 1) : (nCharLen / 2);
for (j = 0; j < i; j++)
{
if (conver(pCharBuf[2 * j]  &ldata) == 1 && conver(pCharBuf[2 * j + 1] &hdata) == 1)
{
pByteBuf[j] = ldata | (hdata << 4);
}
else
{
return 0;
}
}

return 1;

}



S32 conver(S8 chTemp U8 *byTemp)
{
if (chTemp >= ‘0‘ && chTemp <= ‘9‘)
{
*byTemp = (U8)chTemp - 48;
return 1;
}
else if (chTemp >= ‘a‘ && chTemp <= ‘f‘)
{
*byTemp = (U8)chTemp - 87;
return 1;
}
else if (chTemp >= ‘A‘ && chTemp <= ‘F‘)
{
*byTemp = (U8)chTemp - 55;
return 1;
}
else if (chTemp == 0)
{
*byTemp = 0;
return 1;
}
else
{
return 0;
}
}

void output(CString &m_strT U32 *pwR S32 nWordLen)
{
/************************************************************************/
U8  pByteBuf[4 * 2 * BNLEN]     = {0};                     //对于乘法可能有2 * bnlen 长度的结果
S8  pCharBuf[4 * 2 * 2 * BNLEN] = {0};
S32 i = 0;
S32 j = 0;
S8  hdata = 0;
S8  ldata = 0;
/************************************************************************/

i = 4 * nWordLen;
memcpy(pByteBuf pwR i);

for (j = 0; j < i; j++)
{
reconver(pByteBuf[j] & 0x0F &ldata);
reconver(pByteBuf[j] >> 4 &hdata);
pCharBuf[2 * j]     = ldata;
pCharBuf[2 * j + 1] = hdata;
}

j = 2 * i;
do 
{
j--;
} while (pCharBuf[j] == ‘0‘ && j > 0);

if (j < 0)
{
m_strT = “0“;
}
for (i = j; i >=0; i--)
{
m_strT += pCharBuf[i];
}

}

void reconver(U8 bytebuf S8 *charBuf)
{

*charBuf = (bytebuf >= 0 && bytebuf <= 9) ? ((S8)bytebuf +48) : ((S8)bytebuf + 55);
}







/*
=======================================================================================================================
描述:把S8类型数组转换成U8类型数组
输入:
pCharBuf:S8类型数组,为‘0‘-‘9‘或‘a‘-‘f‘或‘A‘-‘F‘如果不是则返回0
charlen:S8类型数组长度
输出:
pByteBuf:U8类型数组如果charlen为奇数pByteBuf长度至少为charlen/2+1否则至少为charlen/2
bytelen:

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      36968  2009-11-30 17:06  计算器\Montgomery.aps

     文件       6183  2009-11-30 17:06  计算器\Montgomery.rc

     文件        497  2009-11-30 13:02  计算器\type.h

     文件       1288  2009-11-28 18:09  计算器\Resource.h

     文件       3254  2009-12-09 00:56  计算器\common.cpp

     文件      16848  2009-12-09 23:57  计算器\mon.cpp

     文件      58880  2009-12-10 00:04  计算器\Montgomery.opt

     文件       1729  2009-12-10 00:04  计算器\Montgomery.clw

     文件       3651  2009-11-27 10:03  计算器\ReadMe.txt

     文件       1368  2009-11-27 10:03  计算器\Montgomery.h

     文件       2119  2009-11-27 10:03  计算器\Montgomery.cpp

     文件       4617  2009-12-09 03:21  计算器\Montgomery.dsp

     文件       1202  2009-12-09 23:20  计算器\mon.h

     文件       1054  2009-11-27 10:03  计算器\StdAfx.h

     文件        212  2009-11-27 10:03  计算器\StdAfx.cpp

     文件        402  2009-11-27 10:03  计算器\res\Montgomery.rc2

     文件       1078  2009-11-27 10:03  计算器\res\Montgomery.ico

     文件       6391  2009-11-30 14:00  计算器\Montgomery.mak

     文件        545  2009-11-30 14:00  计算器\Montgomery.dep

     文件      10216  2009-12-10 00:02  计算器\MontgomeryDlg.cpp

     文件        543  2009-11-27 10:03  计算器\Montgomery.dsw

     文件      82944  2009-12-10 00:04  计算器\Montgomery.ncb

     文件        254  2009-12-10 00:04  计算器\Montgomery.plg

     文件        406  2009-11-28 15:07  计算器\common.h

     文件       1603  2009-11-28 18:05  计算器\MontgomeryDlg.h

     目录          0  2009-11-27 10:03  计算器\res

     目录          0  2009-11-27 10:03  计算器

----------- ---------  ---------- -----  ----

               244252                    27



............此处省略0个文件信息

评论

共有 条评论