Python Args By Reference

Paul Rubin http
Wed May 11 01:56:39 EDT 2005


"ncf" <nothingcanfulfill at gmail.com> writes:
> As I fail to see how an array could be used in this (my own
> stupidity?), would you have any such example? 

How's this (untested):

    state = [A,B,C,D,E,F,G,H]
    magic = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 
             0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98 ]

    def P(state, i, magic):
       a,b,c,d,e,f,g,h = state[i:] + state[:i]
       temp1 = h + S3(e) + F1(e,f,g) + K + x
       temp2 = S2(a) + F0(a,b,c)
       # d += temp1; h = temp1 + temp2
       state[(i+3)%8] += temp1; state[(i+7)%8] = temp1 + temp2

    for i in range(9):
       P(state, i, W, magic)

Actually this isn't so good.  You have to be careful about arithmetic
overflow, i.e. do all the additions mod 2**32, so you don't get Python
longs.  I'll leave that as an exercise.



More information about the Python-list mailing list