繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM