./ MultiCS.r82 / convert.c
// Last Modification: 03-06-2009 #include <stdio.h> #include "convert.h" /////////////////////////////////////////////////////////////////////////////// void bin8(unsigned char n, char *s) { int i; for ( i=7; i>=0; i-- ) { *s = '0' + ( (n >> i)& 1 ); s++; } *s='\0'; } /////////////////////////////////////////////////////////////////////////////// void bin16(unsigned short n, char *s) { int i; for ( i=15; i>=0; i-- ) { *s = '0' + ( (n >> i)& 1 ); s++; } *s='\0'; } /////////////////////////////////////////////////////////////////////////////// void bin32(unsigned short n, char *s) { int i; for ( i=31; i>=0; i-- ) { *s = '0' + ( (n >> i)& 1 ); s++; } *s='\0'; } /////////////////////////////////////////////////////////////////////////////// void array2bin( char *src, char *dest, int count ) { int i,j; char c; for ( i=0; i<count; i++) { c = *src; for ( j=7; j>=0; j-- ) { *dest = '0' + ( (c >> j)& 1 ); // if ( (c >> j)&1 ) *dest = '1'; else *dest='0'; dest++; } *dest=' '; dest++; src++; } *dest='\0'; } /////////////////////////////////////////////////////////////////////////////// char hexchars[]="0123456789ABCDEF"; void hex8(int n, char *s) { int i; for( i=4; i>=0; i-=4 ) { *s = hexchars[ (n>>i) & 0x0F ]; s++; } *s = '\0'; } /////////////////////////////////////////////////////////////////////////////// void hex16(int n, char *s) { int i; for( i=12; i>=0; i-=4 ) { *s = hexchars[ (n>>i) & 0x0F ]; s++; } *s = '\0'; } /////////////////////////////////////////////////////////////////////////////// void hex32(int n, char *s) { int i; for( i=28; i>=0; i-=4 ) { *s = hexchars[ (n>>i) & 0x0F ]; s++; } *s = '\0'; } /////////////////////////////////////////////////////////////////////////////// char *array2hex( unsigned char *src, char *dest, int count ) { int i; unsigned char c; for ( i=0; i<count; i++) { c = *src; *dest = hexchars[ (c>>4) & 0x0F ]; dest++; *dest = hexchars[ c & 0x0F ]; dest++; *dest = ' '; dest++; src++; } *dest='\0'; return dest; } /////////////////////////////////////////////////////////////////////////////// int hexvalue(char src) { int rt=0; if ( (src>='0')&&(src<='9') ) rt = (rt<<4) + (src-'0'); else if ( (src>='a')&&(src<='f') ) rt = (rt<<4) + (src-'a')+10; else if ( (src>='A')&&(src<='F') ) rt = (rt<<4) + (src-'A')+10; else return -1; return rt; } /////////////////////////////////////////////////////////////////////////////// int hex2int(char *src) { int rt=0; while (1) { if ( (*src>='0')&&(*src<='9') ) rt = (rt<<4) + (*src-'0'); else if ( (*src>='a')&&(*src<='f') ) rt = (rt<<4) + (*src-'a')+10; else if ( (*src>='A')&&(*src<='F') ) rt = (rt<<4) + (*src-'A')+10; else break; src++; } return ( rt ); } /////////////////////////////////////////////////////////////////////////////// int hex2array( char *src, unsigned char *dest) { unsigned int rt=0; unsigned char c; int size=0; int chars=0; do { c=*src; if ( (c>='0')&&(c<='9') ) { rt = (rt<<4) + (c-'0'); chars++; } else if ( (c>='a')&&(c<='f') ) { rt = (rt<<4) + (c-'a')+10; chars++; } else if ( (c>='A')&&(c<='F') ) { rt = (rt<<4) + (c-'A')+10; chars++; } else if (chars>0) { *dest = rt; dest++; size++; rt=0; chars=0; } if (chars==2) { *dest = rt; dest++; size++; rt=0; chars=0; } src++; } while (c!='\0'); return size; } /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////