Here are a couple of functions that I feel stupid for having written. They work, and they're pretty straightforward; it's just that I feel like I must be missing an easier way to do this...
def net_to_int(numstring): """Convert a big-endian binary number, in the form of a string of arbitrary length, to a native int. """ num = 0 for i in numstring: num *= 256 num += ord(i) return num def int_to_net(num): """Convert a native int to a four-byte big-endian number, in the form of a string. """ numstring = '' for i in xrange(4): numstring = chr(num % 256) + numstring num /= 256 return numstring The situation: I'm getting a four-byte packet from a socket that consists of a big-endian 32-bit integer. (It specifies the length of the data that follows.) I have to send the same thing in reply. send() and recv() work with strings... I'm familiar with ntohl() and htonl(), but those expect/ return integers. -- 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 -- pass it on -- http://mail.python.org/mailman/listinfo/python-list