xref: /aosp_15_r20/external/capstone/bindings/python/xprint.py (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1#!/usr/bin/env python
2# Capstone Python bindings, by Nguyen Anh Quynnh <[email protected]>
3
4from __future__ import print_function
5import sys
6_python3 = sys.version_info.major == 3
7
8
9def to_hex(s, prefix_0x = True):
10    if _python3:
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
15    else:
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)
20
21def 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
28
29def 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:]
34    return to_hex2(x)
35
36def 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:]
41    return to_hex2(x)
42