PostGIS  3.7.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 479 of file lwgeom_api.c.

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

References str.

Referenced by rt_raster_from_hexwkb().

Here is the caller graph for this function: