다음은 기능적 암호 해독 및 암호화 프로그램의 일부인 코드 섹션입니다.파이썬은 파이썬이 int 변수의 선두 0을 유지하도록합니다.
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을 추가하는 문자열로 처리 된 두 변수를 볼 수있다. 그런 다음이 변수들을 결합하여 4 자리 숫자를 만듭니다 (여전히 문자열). 프로그램의 후반부에 생성 된 숫자는 pow 함수에서 사용됩니다. AS 정수는 선행 0을 제거합니다.
내 질문 : 파이썬이 int에 대한 선행 0을 유지하도록 할 수 있습니까? 나는 온라인 검색을 계속하고있다.
편집
내가 프로그램의 encrpytion 부분을 포함 한 사람들을 돕기 위해. 이것은 문제가있는 곳입니다. 위의 코드에서 생성 된 변수는 pow() 함수를 통해 전달됩니다. 이것은 문자열을 처리 할 수 없기 때문에 변수를 앞에 오는 0이 없어지는 정수로 변환해야합니다.
#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
을하는 데 도움이
희망을'내가 여기 옳은 일이다 = "% 02D"%의 i' ... 왜 작동하지 않습니다 당신? – inspectorG4dget
아니요, 정수 값은 선행 0으로 저장되지 않습니다. 다른 방법으로 고려할 앞에 오는 0을 몇 개 정의할까요? 현재 사용중인 문자열 형식으로 인쇄하려면 서식을 지정해야합니다. –
파이썬이 정수를 저장할 때, 커버 아래에 단지 1과 0의 묶음이 있습니다. 십진수는 비트가 인간이 읽을 수있는 표현으로 변환되는 방법입니다. 사용중인 문자열 형식 지정 함수를 사용하여이 표현에 선행 0을 추가 할 수 있지만 선행 0을 int 자체에 저장할 수는 없습니다. 그것은 단지 이해가되지 않습니다. – NullUserException