Search code examples
python-3.xstringunicodehexdata-conversion

Convert unicode to decimal


I have a string like this which i want to convert to only decimal data:

"\u0006;\u0003\u001588D402"

I'm not sure what the output should look like, but I imagine it should be like this:

"631588D402"

I have tried to separate each hexadecimal data and then join them but have been unable to either separate them or convert them correctly. Any idea?


Solution

  • you can go through the string and if the current char is a hex number you add it to new_s elif char in string.printable you skip it (because it is not a hex number and it is printable so it's not some value) else you convert char to his value and then to hex and add the hex value to new_s

    import string
    
    
    s = "\u0006;\u0003\u001588D402"
    new_s = ""
    for char in s:
        if char in "0123456789ABCDEF":  # if char is a hex number
            new_s += char
        # the char isn't a hex number and is printable (removes ;)
        elif char in string.printable:
            pass
        else:
            new_s += hex(ord(char))[2:]
    # in one line:
    # new_s = "".join([char if char in "0123456789ABCDEF" else "" if char in string.printable else hex(ord(char))[2:] for char in s])
    print(new_s)