# How to convert string to hexadecimal

Created Fri, 28 Dec 2012 16:56:42 +0000 by lffelzmann@gmail.com

### lffelzmann@gmail.com

Fri, 28 Dec 2012 16:56:42 +0000

Hello all,

I'm using chipKit Network Shield and I want to set the MAC address. The problem is that I need the mac address in this format:

Example: byte mac[]={0x00,0x18,0x3E,0x01,0x07,0x96};

However, I have this:

Remember that this is just an example. In my code, the mac_address is received by a keyboard. It is not a constant. So I cannot just change the second example by the first one.

I want to convert the mac in string format to the byte format. However, I don't know exactly how to do it. Does anyone have a suggestion?

Thank you.

### majenko

Fri, 28 Dec 2012 18:27:53 +0000

This function will convert a single character into its equivalent 4-bit binary value:

``````unsigned char h2d(unsigned char hex)
{
if(hex &gt; 0x39) hex -= 7; // adjust for hex letters upper or lower case
return(hex &amp; 0xf);
}
``````

You can combine two characters to make a single 8-bit value:

``````unsigned char h2d2(unsigned char h1, unsigned char h2)
{
return (h2d(h1)&lt;&lt;4) | h2d(h2);
}
``````

By the way, hexadecimal is just one of many ways of representing an 8-bit binary value. It's purely a human thing. Hexadecimal means nothing to the CPU.

So, you can use those functions to take pairs of characters from the string, and get 6 8-bit values out of it, which you can then use as your MAC address.

I'll let you work that part out.