资源简介
实现超大整数的加减乘除,模乘模幂。配上窗口,很美观,像系统自带的那么方便。
代码片段和文件信息
//
//
//
#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个文件信息
- 上一篇:SAE 1939 汽车通讯报文
- 下一篇:电脑鼠走迷宫程序包括等高图制作
相关资源
- 计算器代码web程序设计
- 嵌入式课程设计QT完美实现任意进制运
- IOS计算器源码
- 湍流k-ε经验值计算器
- 精确小数计算器含dll
- 用QT设计的一个计算器
- DLL版计算器 编程练习必备
- 矩形空心线圈 计算器 LC谐振 计算器
- 混合复数计算器
- SPWM计算器
- 简单四则运算计算器附带乘方运算
- MacOS计算器
-
macOS 下使用ob
jective-c编写的计算器 - 计算器9位数
- 单片机c51设计简易计算器数码管显示
- QT4编写的简单计算器
- 自己写的WINDOWS附件中的科学计算器,
- 基于8255a的计算器
- SPWM脉宽数计算器
- 单片机和LCD1602实现的简易计算器
- 多项式相乘一元稀疏多项式简单计算
- 三国杀武将张昌蒲技能计算器
- Ansoft场计算器
- xcode 简易计算器
-
ob
jective-c的计算器 - fpga vhdl计算器
- linux下的设计QT计算器
- OC 简单计算器(修改版)
- 浮点数转换器,浮点数计算器
- xcode计算器源代码
评论
共有 条评论