One of our developers just did a hex string to int conversion with
array_sscanf(x, "%x")[0]. Since we have int2hex, string2hex and
hex2string I thought it would be symmetric to add a hex2int function
as well. However doing it with

/*! @decl int hex2int(string hex)
 *! @appears String.hex2int
 *!
 *! Convert a string of hexadecimal digits to an integer.
 *!
 *! @seealso
 *!   @[int2hex()]
 */
PMOD_EXPORT
PIKEFUN int hex2int(string hex)
  errname String.hex2int;
  optflags OPT_TRY_OPTIMIZE;
{
  int r=0;
  unsigned char *q = (unsigned char *)hex->str;
  int len = hex->len;
  if(hex->size_shift) Pike_error("Only hex digits allowed.\n");

  for (; len; len--)
  {
    r <<= 4;
    r |= hexdecode[*q++];
  }
  RETURN r;
}

was about twice as slow as the array_sscanf approach. Is that because
some special sscanf handling?
  • hex2int Martin Nilsson (Opera Mini - AFK!) @ Pike (-) developers forum
    • hex2in... Henrik Grubbstr�m (Lysator) @ Pike (-) developers forum
      • he... Martin Nilsson (Opera Mini - AFK!) @ Pike (-) developers forum
        • ... Henrik Grubbstr�m (Lysator) @ Pike (-) developers forum
          • ... Per Hedbor () @ Pike (-) developers forum
          • ... Martin Nilsson (Opera Mini - AFK!) @ Pike (-) developers forum

Reply via email to