我正在学习如何用Python编写DES加密代码。我在Github(链接:https://github.com/RobinDavid/pydes/blob/master/pydes.py)上遇到了这段代码,但我无法理解其中的一部分代码。(参见Github代码中的第123行,如下所示:)
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
我理解函数的功能(如所写:#以给定大小的字符串形式返回二进制值),但我不理解它是如何实现的,我不理解第124行。谢谢你的回答。你知道吗
这行是一个三元表达式,如果
val
是整数,则返回val
的二进制值;如果val
是整数,则返回val
的ASCII码。你知道吗这是一种与python2和python3兼容的方法。你知道吗
在Python3中,
val
是一个整数,作为bytes
数据的一部分,而在Python2中,val
是作为str
数据的一部分的1大小的字符串,这在二进制和字符串之间没有区别。你知道吗简而言之,这是一种将字节/字符转换为字符串的二进制表示形式的可移植方法。你知道吗
请注意,作者可以从
可以被
binval = binval.zfill(bitsize)
替换。你知道吗相关问题 更多 >
编程相关推荐