Java Integer.ParseInt translation to python
comp.lang.java
jicman at gmail.com
Wed Feb 9 20:53:59 EST 2005
Ok. Just to end this, here is what is happening with this. Take for
example this piece of java code:
int i = 235;
byte b = (byte)i;
this will assign b a value of -21. Huh? Ok, so in java a byte is an 8
bit value between -128 to 127. So, what (byte) does to an integer is
to check if the value is over 127. If it is the new value is the value
- 256. Otherwise, the value gets the integer, thus
def MyByte(int):
if int > 127:
return int - 256
else:
return int
will do the trick.
thanks for all the input folks.
josé
jose isaias cabrera wrote:
> 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
> [B at 1616c7
>
> 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, "[B at 1616c7"
>
> Thanks.
>
> josé
More information about the Python-list
mailing list