jose isaias cabrera <[EMAIL PROTECTED]> wrote: [java output] > StringLength = 40 > c1 193 -63 > 7c 124 124 > e1 225 -31 > 86 134 -122 > ab 171 -85 > 94 148 -108 > ee 238 -18 > b0 176 -80 > de 222 -34 > 8a 138 -118 > e3 227 -29 > b5 181 -75 > b7 183 -73 > 51 81 81 > a7 167 -89 > c4 196 -60 > d8 216 -40 > e9 233 -23 > ed 237 -19 > eb 235 -21 > [EMAIL PROTECTED] > > But, here is what I have for python, > > def PrepareHash(HashStr): > while len(HashStr) > 0: > byte = HashStr[0:2] > print byte,int(byte,16),byte(int(byte,16)) # & 0xff > HashStr = HashStr[2:] > return byte > > def Main(): > HashStr = "c17ce186ab94eeb0de8ae3b5b751a7c4d8e9edeb" > HashStr = PrepareHash(HashStr) > print "Prepared HashStr :",HashStr > > Main()
When I try your code I get this... >>> def PrepareHash(HashStr): ... while len(HashStr) > 0: ... byte = HashStr[0:2] ... print byte,int(byte,16),byte(int(byte,16)) # & 0xff ... HashStr = HashStr[2:] ... return byte ... >>> HashStr = "c17ce186ab94eeb0de8ae3b5b751a7c4d8e9edeb" >>> print PrepareHash(HashStr) c1 193 Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 4, in PrepareHash TypeError: 'str' object is not callable >>> You cant do byte(int(byte,16)) - byte is a string! So you haven't posted the actual code you ran... Anyway what you want is this >>> decoded = HashStr.decode('hex') >>> for i,c in enumerate(decoded): print "%2d %02x" % (i,ord(c)) ... 0 c1 1 7c 2 e1 3 86 4 ab 5 94 6 ee 7 b0 8 de 9 8a 10 e3 11 b5 12 b7 13 51 14 a7 15 c4 16 d8 17 e9 18 ed 19 eb > and it results to, > > mulo 19:32:06-> python test.py > c1 193 Á > 7c 124 | > e1 225 á > 86 134 > ab 171 « > 94 148 > ee 238 î > b0 176 ° > de 222 Þ > 8a 138 > e3 227 ã > b5 181 µ > b7 183 · > 51 81 Q > a7 167 § > c4 196 Ä > d8 216 Ø > e9 233 é > ed 237 í > eb 235 ë > > which is not even close, and yes, I know that it's not the same > code. Actually the hex digits are the same in all 3 cases, so the strings are the same. The reason the characters look different is because you've got a different encoding for the python and java output I would guess. Java bytes are signed also just to add to the confusion. -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list