How to retain leading zeros of int variables?
int, python, variables, zero
Solution
The concept of leading zeros is a display concept, not a numerical one. You can put an infinite number of leading zeros on a number without changing its value. Since it's not a numeric concept, it's not stored with the number.
You have to decide how many zeros you want when you convert the number to a string. You could keep that number separately if you want.
Problem
Below is a section of code which is part of a functional decryption and encryption program. ``` 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 ``` As you can see the two variables i and j are first treated as string to add a 0 in front of any single digit numbers (as string). These variables then are combined to make a four digit number (still as a string). Later in the program the number created are used in a `pow()` function, as `int`s remove any leading zeros. My question: Is it possible to force python to keep the leading zero for `int`s? I have and continued to search online. Edit To help people I have included the encryption part of the program. This is where the problem lies. The variables created in the above code are passed through a `pow()` function. As this can't handle strings I have to convert the variables to `int`s where the leading zero is lost. ``` #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 ```