En Tue, 01 Apr 2008 14:11:31 -0300, Stephen Cattaneo <[EMAIL PROTECTED]> escribió:
> I am relatively new to socket programming. I am attempting to use raw > sockets to spoof my IP address. Don't bother to try... > From what I can tell I will have to > build from the Ethernet layer on up. This is fine, but I am having > some trouble with manipulating my hex values. > > Seems to me that there are two ways to store hex values: > 1. as literal hex - 0x55aa > 2. as a string - "\x55aa" The later is exactly the same string as "Uaa": py> print "\x55aa" Uaa > If I want to convert hex to decimal I can use: > int("\x55aa", 16) # note that plain 0x55aa, instead of "\x55aa", will > raise an exception Have you tried it? py> int("\x55aa", 16) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 16: 'Uaa' py> int("0x55aa", 16) 21930 > The Question: > If I want to do any kind of calculation I have found its best to just > convert my values to decimal, do the math, then convert back to hex. In > my bellow code I get "decimal" and "hex" are just ways to represent/display integers. You convert from the representation used on the source, to integer, do some math, and convert again to another representation for display/store the result. > """byteList.append(int(value,16)) > ValueError: invalid literal for int()""" > when attempting to run. I do not understand why this exception is > being raised? It is a for loop iterating over a list of hex strings. > Sorry for the long-ish question. Any help or comments would be > appreciated. Use the struct package. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list