aboutsummaryrefslogtreecommitdiffstats
path: root/capstone/bindings/python/xprint.py
diff options
context:
space:
mode:
Diffstat (limited to 'capstone/bindings/python/xprint.py')
-rwxr-xr-xcapstone/bindings/python/xprint.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/capstone/bindings/python/xprint.py b/capstone/bindings/python/xprint.py
new file mode 100755
index 000000000..70affaca5
--- /dev/null
+++ b/capstone/bindings/python/xprint.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# Capstone Python bindings, by Nguyen Anh Quynnh <aquynh@gmail.com>
+
+from __future__ import print_function
+import sys
+_python3 = sys.version_info.major == 3
+
+
+def to_hex(s, prefix_0x = True):
+ if _python3:
+ if prefix_0x:
+ return " ".join("0x{0:02x}".format(c) for c in s) # <-- Python 3 is OK
+ else:
+ return " ".join("{0:02x}".format(c) for c in s) # <-- Python 3 is OK
+ else:
+ if prefix_0x:
+ return " ".join("0x{0:02x}".format(ord(c)) for c in s)
+ else:
+ return " ".join("{0:02x}".format(ord(c)) for c in s)
+
+def to_hex2(s):
+ if _python3:
+ r = "".join("{0:02x}".format(c) for c in s) # <-- Python 3 is OK
+ else:
+ r = "".join("{0:02x}".format(ord(c)) for c in s)
+ while r[0] == '0': r = r[1:]
+ return r
+
+def to_x(s):
+ from struct import pack
+ if not s: return '0'
+ x = pack(">q", s)
+ while x[0] in ('\0', 0): x = x[1:]
+ return to_hex2(x)
+
+def to_x_32(s):
+ from struct import pack
+ if not s: return '0'
+ x = pack(">i", s)
+ while x[0] in ('\0', 0): x = x[1:]
+ return to_hex2(x)