3分钟练习
数列计算和转换
今天我们来学习一下,如何将下列的数值转换成为16进制发送方式。
在这里我不能说明这是什么参数,但是可以说这类型的参数可以用在现在非常非常多互联网、制造业的程序上。
【吉米:我想问下为什么课程突然的跳脱?】
是这样的,我写这些教程的时候,会切换电脑,例如在公司写,在宿舍写,在家写,在M记写,每个地点都会换电脑。所以有时候看到是 Idle ,有时候看到是 Anaconda 的 Spyder 或者 Jupyter 甚至是文本文件。
至于内容上的跳脱,一般我的内容是有一个脉络的,当时会临时根据当天遇到的实际状况改为别的实用内容。做完这些特别篇又会转回之前的设定的方向。就类似玩游戏会有主线和支线这样的结构一样。
代码构建和效果展示
转换要求
要将这些数值转换成分钟数值,以便于发送给终端设备。
因此我们会遇到一种问题,就是转换成分钟后,这些数值会非常大,而传输的时候只能有 4位 16进制数,也就是 FFFF (65535)为界限,这样会需要高低位传输。
def cut(num):
h = 0
l = 0
if num < 65536:
l = num
else:
h = num // 65536
l = num % 65536
return h,l
useri = 65537
print(cut(useri))
useri = int(input())
print(cut(useri))
正如我们所知,十六进制的 FFFF 对应 十进制的 65535,当满足 65536 的时候,就会往高位进一位,这么就可以通过 // 整除 和 &=% 求余两种特殊除法来完成这一步。
我们可以结合以前的 while 循环,做成一个查询式的死循环。
数列计算
我们可以通过观察得出结论,这些时间是在500到3000之间,公差为250小时,3000到5000之间,公差为500小时,最后一个公差是1000小时。
这里我们可以用一个简单的限制结尾的循环体,内嵌 if-else 判断,来完成一个自动生成数列。不过鉴于篇幅关系,已经快超过5分钟了,所以这个内容我们明天再学习。·