title: Convert Hexadecimal String to Data
body: <p>I have found a whole lot of different solutions to this problem, but not all of them work, and a lot of them seem somewhat hacky and inefficient. Basically I have a string of hexadecimal data (i.e. "55 AA 41 2A 00 94 55 AA BB BB 00 FF") which I would like to convert to raw data. What is the best way to do this?</p>
  
  <p><strong>UPDATE</strong>: Vicky's solution worked great for me, but I changed it to work with hexadecimal strings that don't have spaces in between and changed the style a bit.</p>
  
  <pre><code>int i = 0;
  char *hexString = "55AA412A009455AABBBB00FF"
  char *hexPtr = hexString;
  unsigned int *result = calloc(strlen(hexString)/2 + 1, sizeof *result);
  
  while (sscanf(hexPtr, "%02x", &amp;result[i++])) {
      hexPtr += 2;
      if (hexPtr &gt;= hexString + strlen(hexString)) break;
  }
  
  return result;
  </code></pre>