2017-05-05 93 views
0

我一直在爲sha1算法編寫一個小型python腳本。我需要初始化h0到h4的全局變量。使用Python創建全局變量,初始化後更改值

在初始化整數的值之後,它將更改爲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 

當我在控制檯打印出來,它給:

[email protected]:~/sha1-hash-algorithm$ python testalgorithm.py 



h0 1393027350754575011593322497 
h1 11101111110011011010101110001001 
h2 10011000101110101101110011111110 
h3 19342823492383875910635592 
h4 11000011110100101110000111110000 

誰能告訴我,爲什麼會出現這種情況?這是python中的一些特殊字符嗎?

我已經包括一個截屏下面的輸出: enter image description here

回答

3

在蟒編號始於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 
1

@luoluo告訴過你的原因。所以,如果你想要一個二進制數分配給一個變量,你應該使用前綴:0B

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

你應該知道,當你打印一個二進制數到控制檯,Python會自動顯示一個十進制數。