int A2I( char *str )
{
  int ret = 0;
  while( *str )
  {
    ret *= 10;
    ret += *str - 0x30;
    str++;
  }
  return ret;
}

char I2HEX01( int value )
{
  if( value <= 9 ) return value + '0';
  return value + 55;
}

void I2HEX02( char *dst, int value )
{
  *dst++ = I2HEX01( value / 16 );
  *dst = I2HEX01( value % 16 );
}

void I2ASC02( char *dst, int value )
{
  *dst++ = (value / 10) + '0';
  *dst = ( value % 10 ) + '0';
}

int CheckSum( char *dst, char *src, int size )
{
  int i,c_sum = 0;

  for( i = 0; i < size; i++ ) c_sum += *src++;
  c_sum = (-c_sum) & 0xff;
  I2HEX02( dst, c_sum );
  return c_sum;
}
