bcd.c 447 B

123456789101112131415161718192021222324
  1. /* $OpenBSD: bcd.c,v 1.1 2013/10/28 22:13:12 miod Exp $ */
  2. /* $NetBSD: bcd.c,v 1.1 2006/03/11 15:40:07 kleink Exp $ */
  3. /*
  4. * Convert a single byte between (unsigned) packed bcd and binary.
  5. * Public domain.
  6. */
  7. #include <lib/libkern/libkern.h>
  8. unsigned int
  9. bcdtobin(unsigned int bcd)
  10. {
  11. return (((bcd >> 4) & 0x0f) * 10 + (bcd & 0x0f));
  12. }
  13. unsigned int
  14. bintobcd(unsigned int bin)
  15. {
  16. return ((((bin / 10) << 4) & 0xf0) | (bin % 10));
  17. }