| @@ 46-66 (lines=21) @@ | ||
| 43 | if q == 0: return p |
|
| 44 | return gcd(q, abs(p%q)) |
|
| 45 | ||
| 46 | def bytes2int(bytes): |
|
| 47 | """Converts a list of bytes or a string to an integer |
|
| 48 | ||
| 49 | >>> (128*256 + 64)*256 + + 15 |
|
| 50 | 8405007 |
|
| 51 | >>> l = [128, 64, 15] |
|
| 52 | >>> bytes2int(l) |
|
| 53 | 8405007 |
|
| 54 | """ |
|
| 55 | ||
| 56 | if not (type(bytes) is types.ListType or type(bytes) is types.StringType): |
|
| 57 | raise TypeError("You must pass a string or a list") |
|
| 58 | ||
| 59 | # Convert byte stream to integer |
|
| 60 | integer = 0 |
|
| 61 | for byte in bytes: |
|
| 62 | integer *= 256 |
|
| 63 | if type(byte) is types.StringType: byte = ord(byte) |
|
| 64 | integer += byte |
|
| 65 | ||
| 66 | return integer |
|
| 67 | ||
| 68 | def int2bytes(number): |
|
| 69 | """Converts a number to a string of bytes |
|
| @@ 44-64 (lines=21) @@ | ||
| 41 | return p |
|
| 42 | ||
| 43 | ||
| 44 | def bytes2int(bytes): |
|
| 45 | """Converts a list of bytes or a string to an integer |
|
| 46 | ||
| 47 | >>> (((128 * 256) + 64) * 256) + 15 |
|
| 48 | 8405007 |
|
| 49 | >>> l = [128, 64, 15] |
|
| 50 | >>> bytes2int(l) #same as bytes2int('\x80@\x0f') |
|
| 51 | 8405007 |
|
| 52 | """ |
|
| 53 | ||
| 54 | if not (type(bytes) is types.ListType or type(bytes) is types.StringType): |
|
| 55 | raise TypeError("You must pass a string or a list") |
|
| 56 | ||
| 57 | # Convert byte stream to integer |
|
| 58 | integer = 0 |
|
| 59 | for byte in bytes: |
|
| 60 | integer *= 256 |
|
| 61 | if type(byte) is types.StringType: byte = ord(byte) |
|
| 62 | integer += byte |
|
| 63 | ||
| 64 | return integer |
|
| 65 | ||
| 66 | def int2bytes(number): |
|
| 67 | """Converts a number to a string of bytes |
|