/lightning-fast-hex-parser

A stupidly optimized Hex String parser

Primary LanguageCMIT LicenseMIT

lightning-fast-hex-parser

A stupidly optimized Hex String parser

TL;DR

unsigned long parse_uint32_3(const char c[8]) {
  unsigned long long f = *((unsigned long long *) (void*) &c[0]);
  unsigned long long t = f & 0x4040404040404040;
  unsigned long long s = (f & 0xF0F0F0F0F0F0F0F) + ((t >> 3) | (t >> 6));
  s = ((s << 4) | (s >> 8)) & 0x00FF00FF00FF00FF;
  s |= s << 24;
  return (s & 0xFFFF0000FFFF0000) | (s >> 48);
}