进制间的转换笔记

 今天发现电脑中的破解计算器似乎被病毒感染了,启动不了,于是乎,就有了今天的这篇笔记吧。。。

说动手就马上动手写一个功能和它相同的计算器,方便以后的使用,就不会在去求助于别人的程序了。。。

说道这里,我发现,其实计算器的实现,其实还是字符串与个进制的转换问题。。。

因为,只要你从文本框获取数据或者是写入数据,不可避免的都要使用字符串的操作。。

到底我们应该怎么样去做呢?

 

还是首先来看看我的程序的主界面吧。。。

主界面

怎么样,功能还是比较完善的吧。。。

在这里边呢,我还加入了获取最大公约数 GFC和 最小公倍数 LCM 的功能。。。

 

首先,我们当然必须从文本框中获取内容咯,

 GetDlgItem(EDIT_BINARY)->GetWindowText(m_strBinary);经典的获取文本字符串的函数

 

得到字符串后,我们都想要处理它了。。。

先看这个函数吧:

就是可以将字符串转换成 2, 8 , 16  的数据。。。

 

Convert strings to a long-integer value.

long strtol( const char *nptr, char **endptr, int base );
long wcstol( const wchar_t *nptr, wchar_t **endptr, int base );
Parameters
nptr
Null-terminated string to convert.    存储转换后的数据,方便以后的处理
endptr
Pointer to character that stops scan.    指向要转化的字符的末尾。。。想到与哨兵吧,把它设为NULL 也是可以的
base
Number base to use.     想要转化的进制。。2 ,8 ,16

最后,什么都准备好了,我们就能够对这些数据进行其他的操作了。。。

哈哈

 

1:写入文本框:

 

 wsprintf(m_szDec, "%ld", m_lDec);   将数据格式化成字符串的操作,不然是写不到文本框的。。。


 ::SetDlgItemText(this->m_hWnd, EDIT_DEC_2, m_szDec);  写到指定的位置

 

2:对话框输出:

 wsprintf(m_szDec, "%d", m_lGCF);     使用的方法大同小异。。。
 MessageBox(m_szDec, "Result", NULL);

 

最后,说一下 UpdateData();

它默认参数是 TRUE , 也就是将控件上的数据赋给 相应的变量,

false  ,将相应变量的值 赋给 控件

 

这就是我写的进制转换工具的心得体会吧。。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值