下面是一段代码,它是功能解密和加密程序的一部分。
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功能。 AS ints删除任何前导零。
我的问题:是否可以强制python保持整数的前导零。我已经并继续在线搜索。
修改
为了帮助我已经包含该程序的加密部分的人。这就是问题所在。在上面的代码中创建的变量通过pow()函数传递。由于这不能处理字符串,我必须将变量转换为丢失前导零的整数。
#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
答案 0 :(得分:16)
尽管上面的评论对于1,01和001都是正确的,但它们都与INT相同,但它在时间建模或顺序电影制作中非常有用,可以保持前导零。我经常这样做以确保影片剪辑的顺序正确。这样做的简单方法是使用zfill。 zfill确保数字的str版本至少是你告诉它的字符数,并通过填写字符串&#34; number&#34;的左侧来实现。用零。
>>> x = int(1)
>>> NewStringVariable = str(x).zfill(3)
>>> print NewStringVariable
001
>>> NewStringVariable = str(x).zfill(5)
>>> print NewStringVariable
00001
答案 1 :(得分:13)
前导零的概念是一种显示概念,而不是数字概念。您可以在数字上放置无数个前导零而不更改其值。由于它不是数字概念,因此不会与数字一起存储。
将数字转换为字符串时,您必须确定所需的零数。如果需要,您可以单独保留该号码。
答案 2 :(得分:0)
我从Arduino那里得到了value/#text
的日期字符串。
所以假设我得到255.255.255.0
;这将是hhmmss
,但s = "122041"
将为12:20:41
。
语句9am
会引发运行时错误,因为9不是八进制数,因此是非法字符。
解决此问题:
090000
希望有所帮助