Ok, so this,
buffer[0] = (byte)Integer.parseInt(string,16);
in java is, partly, this
buffer[0] = int(string, 16)
in python. But here is my problem. When I call this java subroutine,
byte[] decodeKey(String inString) { if (inString == null) return null;
System.out.println("StringLength = " + inString.length()); byte[] retBuf = new byte[inString.length()/2]; // The string has two hex characters per byte. for (int index = 0; index < retBuf.length; index++) { System.out.print(inString.substring(2*index, 2*index+2)); System.out.println(" " + Integer.parseInt(inString.substring(2*index, 2*index+2), 16) + " " + (byte)Integer.parseInt(inString.substring(2*index, 2*index+2), 16)); retBuf[index] = (byte)Integer.parseInt(inString.substring(2*index, 2*index+2), 16); } System.out.println(retBuf);
return retBuf; }
I get this 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()
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. So, the question is, how can I make this java (byte) call in python? so that the result would be the right one, "[EMAIL PROTECTED]"
Thanks.
josé
-- http://mail.python.org/mailman/listinfo/python-list