python 如何保留int变量的前导零?

uxhixvfz  于 2023-01-16  发布在  Python
关注(0)|答案(4)|浏览(371)

下面是一段代码,它是函数解密和加密程序的一部分。

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()函数中,因为int s删除了任何前导零。
我的问题:是否可以强制python保留int s的前导零?我已经并继续在网上搜索。

    • 编辑**

为了帮助人们,我在程序中加入了加密部分。这就是问题所在。在上面的代码中创建的变量是通过pow()函数传递的。由于它不能处理字符串,我必须将变量转换为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
rmbxnbpk

rmbxnbpk1#

虽然上面关于1、01和001的评论是正确的,它们都与int相同,但它在时态建模中非常有用。或者连续的电影制作来保持前导零。我经常这样做来确保电影剪辑的顺序正确。最简单的方法是使用zfill()来确保str版本的数字至少包含您所指定的字符数,并且通过在字符串“number”的左侧填充零来实现。

>>> x = int(1)    
>>> NewStringVariable = str(x).zfill(3)    
>>> print NewStringVariable    
001    
>>> NewStringVariable = str(x).zfill(5)    
>>> print NewStringVariable    
00001
cgvd09ve

cgvd09ve2#

前导零的概念是一个显示概念,而不是一个数值概念。您可以在一个数字上放置无限多个前导零,而无需更改其值。由于它不是一个数值概念,因此不会与数字一起存储。
当你把数字转换成字符串时,你必须决定你想要多少个零。如果你愿意的话,你可以把那个数字分开。

flvtvl50

flvtvl503#

我从我的Arduino的串行线上得到了像hhmmss这样的日期字符串。
假设有s = "122041"这将是12:20:41,然而9am将是090000
语句print "%d" % (s)引发运行时错误,因为9不是八进制数,因此是非法字符。
要解决此问题:

print "%06d" % (int(s))

希望能有所帮助

hs1ihplo

hs1ihplo4#

试试这个:

number = 1
print("%02d" % (number,))

相关问题