본문 바로가기

IT/Linux

bcd2bin

Linux 커널 트리에 있는 함수 Test

 

 

#include 
#include 
unsigned bcd2bin(unsigned char val)
{
        return (val & 0x0f) + (val >> 4) * 10;
}

unsigned char bin2bcd(unsigned val)
{
        return ((val / 10) << 4) + val % 10;
}


void main(void)
{
        unsigned  val;

        printf("====================================\n");
        val = bcd2bin(0x11);
        printf("bcd2bin(0x11) ==>0x%02x/%d\n", val, val);
        val = bcd2bin(0x19);
        printf("bcd2bin(0x19) ==>0x%02x/%d\n", val, val);
        val = bcd2bin(0x1a);
        printf("bcd2bin(0x1a) not BCD ==>0x%02x/%d\n", val, val);
        val = bcd2bin(0x20);
        printf("bcd2bin(0x20) ==>0x%02x/%d\n", val, val);
        printf("====================================\n");
        val = bin2bcd(19);
        printf("bin2bcd(19) ==>0x%02x/%d\n", val, val);
        val = bin2bcd(20);
        printf("bin2bcd(20) ==>0x%02x/%d\n", val, val);

}

[root@localhost bcd2bin]# ./a.out 
====================================
bcd2bin(0x11) ==>0x0b/11
bcd2bin(0x19) ==>0x13/19
bcd2bin(0x1a) not BCD ==>0x14/20
bcd2bin(0x20) ==>0x14/20
====================================
bin2bcd(19) ==>0x19/25
bin2bcd(20) ==>0x20/32

반응형