#include <stdio.h>
#include <string.h>
#include <stdint.h>
void itob(uint8_t Data)
{
uint8_t n[8]={0};
//方法1:
n[0] = (Data & 0x01) == 0x01 ? 1 : 0;
n[1] = (Data & 0x02) == 0x02 ? 1 : 0;
n[2] = (Data & 0x04) == 0x04 ? 1 : 0;
n[3] = (Data & 0x08) == 0x08 ? 1 : 0;
n[4] = (Data & 0x10) == 0x10 ? 1 : 0;
n[5] = (Data & 0x20) == 0x20 ? 1 : 0;
n[6] = (Data & 0x40) == 0x40 ? 1 : 0;
n[7] = (Data & 0x80) == 0x80 ? 1 : 0;
printf("1 - %u : (%u %u %u %u %u %u %u %u)\n", Data, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
//方法2:
int i;
memset(n, 0, 8);
for(i=0;i<8;i++)
{
n[i] = (Data & (0x01<<i)) == (0x01<<i) ? 1 : 0;
}
printf("2 - %u : (%u %u %u %u %u %u %u %u)\n", Data, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
}
void btoi(uint8_t n[8])
{
uint8_t Data = 0x00;
//方法1:
Data = n[0]|(n[1]<<1)|(n[2]<<2)|(n[3]<<3)|(n[4]<<4)|(n[5]<<5)|(n[6]<<6)|(n[7]<<7);
printf("1 - %u : (%u, %u, %u, %u, %u, %u, %u, %u)\n", Data, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
//方法2:
int i;
for(i=0;i<8;i++)
{
Data |= n[i]<<i;
}
printf("2 - %u : (%u, %u, %u, %u, %u, %u, %u, %u)\n", Data, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);
}
int main (void)
{
// 12 : (0 0 1 1 0 0 0 0)
// 20 , (0 0 1 0 1 0 0 0)
// 4 : (0 0 1 0 0 0 0 0)
uint8_t Data = 0x12;
itob(0xc);
itob(0x14);
itob(0x4);
// uint8_t n[8]={0,1,0,0,1,0,1,0};
return 0;
}
int >> unsigned char >> bit
int num = get_val();
if (num < 0)
{
wy_log("!!!read val failed with %d", num);
return num;
}
uint8_t data = num & 0xf;
int i;
memset(n, 0, 8);
for (i = 0; i < 8; i++)
{
n[i] = (data & (0x01 << i)) == (0x01 << i) ? 1 : 0;
}
wy_log("data - %u : (%u %u %u %u %u %u %u %u)", data, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7]);