PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ 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 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: