[英]How to retain leading zeros of int variables?
下面是一段代码,它是功能解密和加密程序的一部分。
while checkvar < maxvar: # is set to < as maxvar is 1 to high for the index of var
#output.append("%02d" % number)
i =ord(var[checkvar]) - 64 # Gets postional value of i
i = ("%02d" % i)
if (checkvar + 1) < maxvar:
j =ord(var[(checkvar + 1)]) - 64 # Gets postional value of i
j = ("%02d" % j)
i = str(i) + str(j) #'Adds' the string i and j to create a new i
li.append(int(i))
checkvar = checkvar + 2
print li
如您所见,首先将 i 和 j 这两个变量视为字符串,以便在任何单个数字(作为字符串)前添加 0。 然后将这些变量组合成一个四位数(仍然是一个字符串)。 在程序的后面,创建的数字用于pow()
function,因为int
s 删除了所有前导零。
我的问题:是否可以强制 python 保留int
的前导零? 我已经并将继续在线搜索。
编辑
为了帮助人们,我在程序中包含了加密部分。 这就是问题所在。 在上面的代码中创建的变量通过pow()
function 传递。由于这无法处理字符串,我必须将变量转换为int
s,其中前导零丢失。
#a = li[]
b=int(17)#pulic = e
c=int(2773)#=n
lenli=int(len(li))
enchecker = int(0)
#encrpted list
enlist = []
while enchecker < lenli:
en = pow(li[enchecker],b,c)#encrpyt the message can only handle int
enlist.append(int(en))
enchecker = enchecker + 1
print enlist
尽管上面关于 1、01 和 001 的评论是正确的,都与int
相同,但它在时间建模或序列电影制作中非常有帮助,以保持前导零。 我经常这样做以确保影片剪辑的顺序正确。 做到这一点的简单方法是使用zfill()
来确保数字的str
版本至少具有您告诉它的字符数,并通过用零填充字符串“数字”的左侧来实现。
>>> x = int(1)
>>> NewStringVariable = str(x).zfill(3)
>>> print NewStringVariable
001
>>> NewStringVariable = str(x).zfill(5)
>>> print NewStringVariable
00001
前导零的概念是一个显示概念,而不是数字概念。 您可以在一个数字上放置无数个前导零而不更改其值。 由于它不是数字概念,因此不与数字一起存储。
将数字转换为字符串时,您必须决定需要多少个零。 如果需要,您可以单独保留该号码。
我从我的 Arduino 的串行线上收到像hhmmss
这样的日期字符串。
所以假设我得到s = "122041"
; 这将是12:20:41
,但是9am
将是090000
。
语句print "%d" % (s)
会引发运行时错误,因为 9 不是八进制数,因此是非法字符。
要解决此问题:
print "%06d" % (int(s))
希望有帮助
尝试这个:
number = 1
print("%02d" % (number,))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.