PostGIS  3.0.6dev-r@@SVN_REVISION@@

◆ parse_hex()

uint8_t parse_hex ( char *  str)

Given a string with at least 2 chars in it, convert them to a byte value.

Convert a single hex digit into the corresponding char.

No error checking done!

Definition at line 489 of file lwgeom_api.c.

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

References str.

Referenced by rt_raster_from_hexwkb().

Here is the caller graph for this function: