Nguyen Anh Quynh | 1098329 | 2014-05-17 09:51:15 +0800 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | # Capstone Python bindings, by Nguyen Anh Quynnh <aquynh@gmail.com> |
| 3 | |
| 4 | from __future__ import print_function |
| 5 | import sys |
| 6 | _python3 = sys.version_info.major == 3 |
| 7 | |
| 8 | |
Nguyen Anh Quynh | bbde6d5 | 2015-04-27 11:34:44 +0800 | [diff] [blame] | 9 | def to_hex(s, prefix_0x = True): |
Nguyen Anh Quynh | 1098329 | 2014-05-17 09:51:15 +0800 | [diff] [blame] | 10 | if _python3: |
Nguyen Anh Quynh | bbde6d5 | 2015-04-27 11:34:44 +0800 | [diff] [blame] | 11 | if prefix_0x: |
| 12 | return " ".join("0x{0:02x}".format(c) for c in s) # <-- Python 3 is OK |
| 13 | else: |
| 14 | return " ".join("{0:02x}".format(c) for c in s) # <-- Python 3 is OK |
Nguyen Anh Quynh | 1098329 | 2014-05-17 09:51:15 +0800 | [diff] [blame] | 15 | else: |
Nguyen Anh Quynh | bbde6d5 | 2015-04-27 11:34:44 +0800 | [diff] [blame] | 16 | if prefix_0x: |
| 17 | return " ".join("0x{0:02x}".format(ord(c)) for c in s) |
| 18 | else: |
| 19 | return " ".join("{0:02x}".format(ord(c)) for c in s) |
Nguyen Anh Quynh | 1098329 | 2014-05-17 09:51:15 +0800 | [diff] [blame] | 20 | |
danghvu | 2412069 | 2014-09-27 17:59:42 -0500 | [diff] [blame] | 21 | def to_hex2(s): |
| 22 | if _python3: |
| 23 | r = "".join("{0:02x}".format(c) for c in s) # <-- Python 3 is OK |
| 24 | else: |
| 25 | r = "".join("{0:02x}".format(ord(c)) for c in s) |
| 26 | while r[0] == '0': r = r[1:] |
| 27 | return r |
Nguyen Anh Quynh | 1098329 | 2014-05-17 09:51:15 +0800 | [diff] [blame] | 28 | |
| 29 | def to_x(s): |
| 30 | from struct import pack |
| 31 | if not s: return '0' |
| 32 | x = pack(">q", s) |
| 33 | while x[0] in ('\0', 0): x = x[1:] |
danghvu | 2412069 | 2014-09-27 17:59:42 -0500 | [diff] [blame] | 34 | return to_hex2(x) |
Nguyen Anh Quynh | 1098329 | 2014-05-17 09:51:15 +0800 | [diff] [blame] | 35 | |
| 36 | def to_x_32(s): |
| 37 | from struct import pack |
| 38 | if not s: return '0' |
| 39 | x = pack(">i", s) |
| 40 | while x[0] in ('\0', 0): x = x[1:] |
danghvu | 2412069 | 2014-09-27 17:59:42 -0500 | [diff] [blame] | 41 | return to_hex2(x) |