aboutsummaryrefslogtreecommitdiffstats
path: root/capstone/bindings/python/xprint.py
blob: 70affaca5c8d3f017784009463cc37508b186d40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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)