Home | History | Annotate | Line # | Download | only in common
      1  1.1  jkunz /*
      2  1.1  jkunz  * File:	HexValues.cpp
      3  1.1  jkunz  *
      4  1.1  jkunz  * Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
      5  1.1  jkunz  * See included license file for license details.
      6  1.1  jkunz  */
      7  1.1  jkunz 
      8  1.1  jkunz #include "HexValues.h"
      9  1.1  jkunz 
     10  1.1  jkunz bool isHexDigit(char c)
     11  1.1  jkunz {
     12  1.1  jkunz 	return isdigit(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
     13  1.1  jkunz }
     14  1.1  jkunz 
     15  1.1  jkunz //! \return The integer equivalent to \a c.
     16  1.1  jkunz //! \retval -1 The character \a c is not a hex character.
     17  1.1  jkunz uint8_t hexCharToInt(char c)
     18  1.1  jkunz {
     19  1.1  jkunz 	if (c >= '0' && c <= '9')
     20  1.1  jkunz 		return c - '0';
     21  1.1  jkunz 	else if (c >= 'a' && c <= 'f')
     22  1.1  jkunz 		return c - 'a' + 10;
     23  1.1  jkunz 	else if (c >= 'A' && c <= 'F')
     24  1.1  jkunz 		return c - 'A' + 10;
     25  1.1  jkunz 	else
     26  1.1  jkunz 		return static_cast<uint8_t>(-1);
     27  1.1  jkunz }
     28  1.1  jkunz 
     29  1.1  jkunz //! \param encodedByte Must point to at least two ASCII hex characters.
     30  1.1  jkunz //!
     31  1.1  jkunz uint8_t hexByteToInt(const char * encodedByte)
     32  1.1  jkunz {
     33  1.1  jkunz 	return (hexCharToInt(encodedByte[0]) << 4) | hexCharToInt(encodedByte[1]);
     34  1.1  jkunz }
     35