I'm trying to comprehend something, So I'm receiving data from raw network data in the form of HEX, in this particular example a MAC address, now I'm using the **Unhexlify() / Hexilfy()** functions from the **Binascii** library in Python 2.7, and for example, I'm recieving for example the following MAC address in the form of hex

**"\xa5\xbb%\x8f\xa0\xda"**

it's a six octet long mac address and I absolutely have no clue what's going on....

if I use the function 

```
binascii.hexlify('\xa5\xbb%\x8f\xa0\xda')

```

it returns 

```
a5bb258fa0da

```

which is indeed the correct MAC address I'm expecting to receive but this really really doesn't make sense.... 
**"\xa5\xbb%\x8f\xa0\xda"**, this isn't correct form of HEX, it contains a **%**, and somehow the **binascii.hexlify()** function manages to translate it to the correct mac address...

I'm honestly failing to understand this, I'm guessing it has something to do with translating from hex to ascii and not hex to dec, but I'm failing to understand how the **unhexlify() / hexlify()** functions work, and how come I'm receiving data in a form of hex and it contains a **%** in it, and yet my hex to ascii function manages to handle it...
what's going on.