1. 4FipS.com
  2. Photos
  3. Videos
  4. Code
  5. Forums
  6. pfQuizzz
  7. About
#!/usr/bin/env python

# /*
# (c) 2014 +++ Filip Stoklas, aka FipS, http://www.4FipS.com +++
# THIS CODE IS FREE - LICENSED UNDER THE MIT LICENSE
# ARTICLE URL: http://forums.4fips.com/viewtopic.php?f=3&t=1210
# */

from string import printable

def bindump(data, width=16, fmt="%02X", sep=" ", tx_on=True, tx_sep="| ", tx_chars=printable[:-5]):
    def chunks(l, n):
        for i in xrange(0, len(l), n):
            yield l[i:i+n]
    res = ""
    tx_indent = width * (len(fmt % 255) + len(sep))
    for line in chunks(data, width):
        hx = "".join("%s%s" % (fmt % ord(c), sep) for c in line)
        tx = tx_sep + "".join((".", c)[c in tx_chars] for c in line)
        res += "%s%s\n" % (hx.ljust(tx_indent, " "), tx if tx_on else "")
    return res

def hexdump_c(data, width=16, fmt="0x%02X", sep=", ", tx_on=True, tx_sep="// "):
    return bindump(data, width, fmt, sep, tx_on, tx_sep)

def decdump_c(data, width=16, fmt="%d", sep=",", tx_on=True, tx_sep=" // "):
    return bindump(data, width, fmt, sep, tx_on, tx_sep)

if __name__ == "__main__":
    data = "".join([chr(x) for x in range(0, 256)]) + "Hello World !!!\n\n\n\\/"
    print(bindump(data))
    print(hexdump_c(data))
    print(hexdump_c(data, tx_on=False))
    print(decdump_c(data))
    print(decdump_c(data, tx_on=False))