二进制编码十进制(BCD) - ASCII转换器

杜格里·坦里弗博士 2013年2月12日 编码 C

BCD格式通常用于LCD和实时时钟。它基本上是在Mod 10上工作的十六进制格式(如果是有意义的话)。我最近开发并测试了两个小,死亡简单但强大的功能:

1 - BCD到ASCII(BCDTOASCII)

2 - ASCII到BCD(ASCIITOBCD)

如果有人也需要,我只是想与社区分享那些人。该代码得到完全评论,以使同事更轻松地让生活方式更轻松。

享受!

char bcdToAscii( unsigned char bcdNibble )
{
  char result;
	
  if( bcdNibble < 10 )
  {// valid BCD input. ( [0,9] is the valid range for BCD input. )
    result = (char)( bcdNibble + 48 );	// +48 is applicable to [0,9] input range.
  }// end if
  else
  {// invalid input
    result = '0';
  }// end else

  return( result );
	
}// end bcdToAscii()

unsigned char asciiToBcd( char asciiByte )
{/* Converts an input ASCII character (expected within the [ '0' - '9' ] range) into its BCD counterpart. */
	
  unsigned char result;

  if( 
      asciiByte >= '0'
      && asciiByte <= '9'
  )
  {// range check passed.
    result = (unsigned char)(asciiByte - 48);	// -48 offset gives the decimal value of the ASCII character.
  }
  else
  {// range check failed.
    result = 0;
  }// end else

  return( result );
	
}// end asciiToBcd()