PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ parse_hex()

uint8_t parse_hex ( char *  str)

Convert a single hex digit into the corresponding char.

Convert a single hex digit into the corresponding char.

No error checking done!

Definition at line 482 of file lwgeom_api.c.

483 {
484  /* do this a little brute force to make it faster */
485 
486  uint8_t result_high = 0;
487  uint8_t result_low = 0;
488 
489  switch (str[0])
490  {
491  case '0' :
492  result_high = 0;
493  break;
494  case '1' :
495  result_high = 1;
496  break;
497  case '2' :
498  result_high = 2;
499  break;
500  case '3' :
501  result_high = 3;
502  break;
503  case '4' :
504  result_high = 4;
505  break;
506  case '5' :
507  result_high = 5;
508  break;
509  case '6' :
510  result_high = 6;
511  break;
512  case '7' :
513  result_high = 7;
514  break;
515  case '8' :
516  result_high = 8;
517  break;
518  case '9' :
519  result_high = 9;
520  break;
521  case 'A' :
522  case 'a' :
523  result_high = 10;
524  break;
525  case 'B' :
526  case 'b' :
527  result_high = 11;
528  break;
529  case 'C' :
530  case 'c' :
531  result_high = 12;
532  break;
533  case 'D' :
534  case 'd' :
535  result_high = 13;
536  break;
537  case 'E' :
538  case 'e' :
539  result_high = 14;
540  break;
541  case 'F' :
542  case 'f' :
543  result_high = 15;
544  break;
545  }
546  switch (str[1])
547  {
548  case '0' :
549  result_low = 0;
550  break;
551  case '1' :
552  result_low = 1;
553  break;
554  case '2' :
555  result_low = 2;
556  break;
557  case '3' :
558  result_low = 3;
559  break;
560  case '4' :
561  result_low = 4;
562  break;
563  case '5' :
564  result_low = 5;
565  break;
566  case '6' :
567  result_low = 6;
568  break;
569  case '7' :
570  result_low = 7;
571  break;
572  case '8' :
573  result_low = 8;
574  break;
575  case '9' :
576  result_low = 9;
577  break;
578  case 'A' :
579  case 'a' :
580  result_low = 10;
581  break;
582  case 'B' :
583  case 'b' :
584  result_low = 11;
585  break;
586  case 'C' :
587  case 'c' :
588  result_low = 12;
589  break;
590  case 'D' :
591  case 'd' :
592  result_low = 13;
593  break;
594  case 'E' :
595  case 'e' :
596  result_low = 14;
597  break;
598  case 'F' :
599  case 'f' :
600  result_low = 15;
601  break;
602  }
603  return (uint8_t) ((result_high<<4) + result_low);
604 }
#define str(s)
Definition: lwgeom_api.c:36

References str.

Referenced by rt_raster_from_hexwkb().

Here is the caller graph for this function: