remove memory copy operation from _QP_HEX_F

To increase performance on formatting hexadecimal,
this PR remove memory copy operations from ```_QP_HEX_F```.

benchmark code:
```
  unsigned addr=123456790;
  for (i = 0; i != 100000000; ++i) {
    sprintf(buf, "%x.%x.%x.%x",
      (addr >> 24) & 0xff, (addr >> 16) & 0xff,
      (addr >> 8) & 0xff, addr & 0xff);
  }
```
benchmark result:
Execution time (sec)
    original : 1.09s
    built : 0.95s

Speedup ratio: compare with the result of `original' (greater is better)
    built : 1.147