2017-05-05 23 views
0

私はsha1アルゴリズム用の小さなpythonスクリプトを作成しようとしています。 h0からh4のグローバル変数を初期化する必要がありました。Pythonによるグローバル変数の作成、初期化後の値の変更

整数の値を初期化した後、h1、h2、またはh4ではなく、h0とh3の値が異なるintに変更されます。私は、h0とh3が特殊文字ではないことを素早くGoogle検索すると、理由はわかりません。

関連するコード:

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の特殊文字ですか?

I出力の以下のスクリーンショットを含んでいた:Pythonの番号で

enter image description here

答えて

3

0で始まるは、ベース8(8進数)です。

>>> 011 
9 

011期待どおりに動作しますが、あなたのケースでは1 * (8**1) + 1 * (8**1) + 1 * (8**0) = 73

に等しい= 9 1 * (8**1) + 1 * (8**0)
0111に等しいです。

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

@luoluoが理由を教えてくれました。だから、あなたは接頭辞を使用する必要がある変数に2進数を割り当てる場合:0B

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

そして、あなたはあなたがコンソールに2進数を印刷するとき、Pythonは自動的進数が表示されますことを知っている必要があります。

関連する問題