PostGIS  3.3.9dev-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 483 of file lwgeom_api.c.

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

References str.

Referenced by rt_raster_from_hexwkb().

Here is the caller graph for this function: