我一直在尝试为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中的一些特殊字符吗?
答案 0 :(得分:3)
在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
答案 1 :(得分:1)
>>> a = 0b10010
>>> print(a)
18
>>> a = 0b001010
>>> print(a)
10
你应该知道,当你向控制台打印二进制数时,Python会自动显示一个十进制数字。