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
