Doxygen Source Code Documentation
r_misc.c File Reference
#include <stdio.h>#include "r_misc.h"Go to the source code of this file.
Functions | |
| int | ulong_size (unsigned long l) |
| unsigned long | r_hex_str_to_long (char *src, int hex_digits) |
| int | r_sprintf_long_to_hex (char *dest, unsigned long lsrc, int bytes, int pad) |
Function Documentation
|
||||||||||||
|
Definition at line 31 of file r_misc.c.
00032 {
00033 unsigned long res = 0;
00034 char * cp;
00035 int nib, digs;
00036
00037 if ( hex_digits <= 0 || hex_digits > 8 )
00038 return 0;
00039
00040 for ( digs = hex_digits, cp = src; digs > 0; digs--, cp++ )
00041 {
00042 if ( (*cp >= '0') && (*cp <= '9') )
00043 nib = *cp - '0';
00044 else if ( (*cp >= 'a') && (*cp <= 'f') )
00045 nib = *cp - 'a' + 10;
00046 else if ( (*cp >= 'A') && (*cp <= 'F') )
00047 nib = *cp - 'A' + 10;
00048 else
00049 {
00050 fprintf( stderr, "r_hex_str_to_long: invalid input string <%8s>\n",
00051 src );
00052 return 0;
00053 }
00054
00055 res = (res << 4) + (nib & 0xf);
00056 }
00057
00058 return res;
00059 }
|
|
||||||||||||||||||||
|
---------------------------------------------------------------------- sprintf_long_to_hex - write hex chars to a string return number of hex pairs written (should equal bytes) ---------------------------------------------------------------------- Definition at line 77 of file r_misc.c.
00083 {
00084 static char hexstring[] = "0123456789ABCDEF";
00085
00086 unsigned char ub;
00087 char * cp = dest;
00088 int posn, size, ret;
00089
00090 if ( (bytes <= 0) || (bytes > 4) )
00091 {
00092 *cp = '\0';
00093 return 0;
00094 }
00095
00096 size = ulong_size( lsrc );
00097
00098 if ( (size < bytes) && !pad ) /* use size if we avoid padding */
00099 ret = size;
00100 else
00101 ret = bytes;
00102
00103 for ( posn = ret-1; posn >= 0; posn-- )
00104 {
00105 /* write one hex pair for this byte */
00106 ub = ( lsrc >> (posn << 3) ) & 0xff; /* current ubyte */
00107 *cp++ = hexstring[(ub>>4) & 0xf]; /* upper nibble */
00108 *cp++ = hexstring[ ub & 0xf]; /* lower nibble */
00109 }
00110
00111 *cp = '\0';
00112
00113 return ret;
00114 }
|
|
|
Definition at line 118 of file r_misc.c. References l. Referenced by r_sprintf_long_to_hex().
|