今天这事儿得好好说道说道,我琢磨着做了个十六进制计算器,过程还挺有意思的,跟大家分享分享。
起因:为啥要干这个?
说起来也简单,平时工作上,或者自己瞎捣鼓点小玩意儿的时候,总免不了跟十六进制打交道。你知道的,内存地址,颜色代码,数据报文,一大堆都是这玩意儿。以前,要么就用电脑系统自带的计算器,调到程序员模式,要么就上网搜个在线的。
但是,总觉得不太顺手。 系统自带的那个,界面有时候切来切去也挺烦的,功能也就那样。在线的,五花八门,有些广告多,有些,界面做得花里胡哨,用起来卡卡的,或者就是功能不全,比如我想同时算个加法,再旁边立马转个十进制,就得操作好几步。有时候网不还抓瞎。
我就想,能不能自己整个简单点的,就满足我常用的那几个功能,清清爽爽的,用着也舒心。
动手:一步步来
念头一起,说干就干!
第一步,肯定是把基本功能给它捋清楚。 我寻思着,核心的无非就是:
- 十六进制数的加、减、乘、除。这个是必须的,不然叫啥计算器。
- 十六进制和十进制之间的互相转换。这个也常用,经常需要验证一下。
- 可能的话,再加个二进制的转换?这个可以有,有时候看标志位啥的也方便。
第二步,界面设计。 我没想搞得多复杂,实用第一。就琢磨着,左边是输入区,放两个输入框,用来输入要计算的两个十六进制数。中间一排是运算符按钮,加减乘除啥的。右边或者下面,就是结果显示区。转换功能也单独弄几个按钮和输入输出框,一目了然。
第三步,开搞! 这部分就比较枯燥了,就是把想法变成现实。我先从最基本的加法开始弄。这里面主要就是处理进位,十六进制嘛逢十六进一。比如 A + B,结果是 15,不对,是十进制的 21,十六进制就是 15。脑子有点绕,但写起来逻辑得清晰。然后是减法,涉及到借位。乘法和除法相对复杂点,尤其是除法,得考虑余数。
在处理输入的时候,我也做了点限制,比如只能输入0-9和A-F(大小写都认),不然输个G进去,程序不就傻眼了嘛
接着就是进制转换。十六进制转十进制,这个好办,按权展开求和就行。十进制转十六进制,就用短除法,除以16取余数,直到商为0,然后把余数倒过来排。二进制的转换也类似。
第四步,加点小细节。 比如,我加了个“清空”按钮,一点就能把所有输入输出都清掉,方便下一次计算。还有就是,结果显示区弄得大一点,醒目一点。我还琢磨着要不要加个历史记录功能,后来想想,暂时先不搞那么复杂,先把核心的弄好再说。
成果:用起来还挺顺手
捣鼓了几天,反反复复测试修改,总算是把这个小玩意儿给弄出来了。界面嘛就是我想要的那种简洁风格,没有乱七八糟的东西。
现在用起来,感觉确实方便多了。比如我要算个 8AB + B78
,直接输进去,点一下“+”,结果 1423
马上就出来了。旁边想看看 DAD
是多少十进制,输进去一点转换,3501
,妥妥的。
虽然市面上有很多功能强大的计算器,但自己做的这个,就像量身定做的衣服,用着特别贴心。而且这个过程本身也挺有成就感的,把自己的想法一步步实现出来,这种感觉还是不错的。
以后可能还会根据需要再给它加点新功能,比如位运算啥的,不过目前这些已经基本够我用了。今天就先分享到这,算是一次小小的实践记录!