文章目录 1. 前言 2. 源码展示 3. 演示用例 1. 前言 主要目的是解决不同类型数字(十进制、十六进程、二进制)相互计算时换算麻烦的问题,以及针对计算结
文章目录
- 1. 前言
- 2. 源码展示
- 3. 演示用例
1. 前言
主要目的是解决不同类型数字(十进制、十六进程、二进制)相互计算时换算麻烦的问题,以及针对计算结果计算其十进制、十六进制、二进制大小和以可读形式展现其KB、MB、GB的大小。
特点:随意输入表达式、不同进制混用、输出多个进制转换结果、能够输出不同的存储单位值。
2. 源码展示
calculator.py
from ast import exprk = 4
def alin_4(s):
# 每四位显示,高位补零
# 针对二进制和十六进制
r = []
s = '0'*(k - len(s) % k) + s if len(s) % k != 0 else s
# print("s", s)
for i in range(0, len(s) // k, 1):
# print(s[-k*(i+1):len(s)-k*i])
r.append(s[-k*(i+1):len(s)-k*i])
r.reverse()
return '_'.join(r)
while True:
result = int(eval(input()))
BIN = '0b_' + alin_4(bin(result)[2:])
HEX = '0x_' + alin_4(hex(result)[2:])
print(
"DEC:%.3f\nBIN:%s\nHEX:%s\nKB:%.3f\nMB:%.3f\nGB:%.3f\n" %
(result, BIN, HEX, result / 1024, result /1024 / 1024, result /1024 / 1024 / 1024)
)
3. 演示用例
Ctrl+C 结束输入。
PS E:\Python_prj> python -u "e:\Python_prj\calculator.py"1 + 0x2 + 0b0011
DEC:6.000
BIN:0b_0110
HEX:0x_0006
KB:0.006
MB:0.000
GB:0.000
2 + 4 + 8 + 16 + 32 + 64
DEC:126.000
BIN:0b_0111_1110
HEX:0x_007e
KB:0.123
MB:0.000
GB:0.000
0xffff + 987654 + 0xFFFFFFFFFFFFFFFFFF
DEC:4722366482869646262272.000
BIN:0b_0001_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000_0001_0010_0000_0100
HEX:0x_0100_0000_0000_0010_1204
KB:4611686018427388928.000
MB:4503599627370497.000
GB:4398046511104.001