使用Python创建全局变量,初始化后更改值

2024-06-18 16:38:30 发布

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

我一直在尝试为sha1算法编写一个小python脚本。我需要初始化h0到h4的全局变量。你知道吗

初始化整数的值后,它将更改为h0和h3值的不同int,而不是h1、h2或h4。我不知道为什么,谷歌快速搜索显示h0和h3不是特殊字符。你知道吗

相关代码:

h0 = 0
h1 = 0
h2 = 0
h3 = 0
h4 = 0

#Initialize some variables
def init_var():
    global h0
    global h1
    global h2
    global h3
    global h4

    h0 = 01100111010001010010001100000001
    h1 = 11101111110011011010101110001001
    h2 = 10011000101110101101110011111110
    h3 = 00010000001100100101010001110110
    h4 = 11000011110100101110000111110000

    print "\n\n\n h0", h0
    print "h1", h1
    print "h2", h2
    print "h3", h3
    print "h4", h4

当我在控制台中打印它时,它会给出:

robert@robert-VirtualBox:~/sha1-hash-algorithm$ python testalgorithm.py



 h0 1393027350754575011593322497
h1 11101111110011011010101110001001
h2 10011000101110101101110011111110
h3 19342823492383875910635592
h4 11000011110100101110000111110000

有人能告诉我为什么会这样吗?这是python中的特殊字符吗?你知道吗

我在下面的输出中包含了一个屏幕截图: enter image description here


Tags: 脚本算法整数h2h1globalrobertsha1
2条回答

在python中,以0开头的数字以8为基数(八进制数)。你知道吗

>>> 011
9

011等于1 * (8**1) + 1 * (8**0)=9
0111等于1 * (8**1) + 1 * (8**1) + 1 * (8**0)=73

在你的情况下,这是预期的工作。你知道吗

>>> h0 = 01100111010001010010001100000001
>>> h0
>>> 1393027350754575011593322497L

@罗罗已经告诉你了原因。因此,如果要为变量分配二进制数,应该使用前缀:0b

>>> a = 0b10010
>>> print(a)
18
>>> a = 0b001010
>>> print(a)
10

您应该知道,当您将二进制数打印到控制台时,Python将自动显示十进制数。你知道吗

相关问题 更多 >