在Python中实现DES,不能理解cod的一部分

2024-05-29 02:42:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习如何用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行。谢谢你的回答。你知道吗


Tags: the代码githubsizelenifbinvalue
1条回答
网友
1楼 · 发布于 2024-05-29 02:42:19
binval = bin(val)[2:] if isinstance(val, int) else bin(ord(val))[2:]

这行是一个三元表达式,如果val是整数,则返回val的二进制值;如果val是整数,则返回val的ASCII码。你知道吗

这是一种与python2和python3兼容的方法。你知道吗

在Python3中,val是一个整数,作为bytes数据的一部分,而在Python2中,val是作为str数据的一部分的1大小的字符串,这在二进制和字符串之间没有区别。你知道吗

简而言之,这是一种将字节/字符转换为字符串的二进制表示形式的可移植方法。你知道吗

请注意,作者可以从

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

可以被binval = binval.zfill(bitsize)替换。你知道吗

相关问题 更多 >

    热门问题