2017-11-14 8 views
0

나는 Python으로 DES 암호화 코드를 작성하는 법을 배우고있다. Github (코드 : https://github.com/RobinDavid/pydes/blob/master/pydes.py)에서이 코드를 발견했지만 코드의 일부를 이해할 수는 없습니다. (또한 서면으로 내가 (함수가 무엇을하는지 이해 :)Python에서 DES 구현하기, 코드의 일부를 이해할 수 없다

def binvalue(val, bitsize): #Return the binary value as a string of the given size 
    binval = bin(val)[2:] if isinstance(val, int) else bin(ord(val))[2:] # this is line 124 I'm not getting 
    if len(binval) > bitsize: 
     raise "binary value larger than the expected size" 
    while len(binval) < bitsize: 
     binval = "0"+binval #Add as many 0 as needed to get the wanted size 
return binval 

아래에 주어진 Github에서 코드 라인 (123)을 참조하십시오 : 주어진 크기의 문자열로 이진 값 #Return)하지만 난 이해가 안 돼요 그것이 어떻게되는지, 나는 124 행을 이해하지 못한다. 응답 해 주셔서 감사합니다.

+0

what 's line 124 ?? –

+0

'binval = "0"+ binval' : 작성자에게'zfill()'이 존재 함을 알리십시오. –

+0

링크에서 Line124가 binval = bin (val) [2 :] 인 경우 isinstance (val, int) else bin (ord (val)) [2 :] – sciencaholic

답변

2
binval = bin(val)[2:] if isinstance(val, int) else bin(ord(val))[2:] 

이 라인은 다른 사람이 같은 작업을 수행하지만, val의 ASCII 코드에 val 정수 경우 val의 이진 값을 반환 삼항 표현이다.

val는 1 사이즈 인 경우, (다른 사람들) 방식 파이썬 3 val

정수가 bytes 데이터의 일부로한다 3. 파이썬 2 및 Python 호환 될 문자열은 파이썬 2에서 str 데이터의 일부로, 바이너리 & 문자열 사이의 차이를 만들지 않습니다.

간단히 말해서, 이것은 바이트/문자를 문자열로 이진 표현으로 변환하는 이식성있는 방법입니다. 저자는

while len(binval) < bitsize: 
     binval = "0"+binval 

때문에 파이썬에 대한 자세한 내용을 배울 수

참고 binval = binval.zfill(bitsize)로 대체 될 수있다.