@@ 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 |