编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "stdint.h"

int dectobin(int n)
{
    int sum = 0;
    int y, x = 1; // y表示余数,x为叠加的系数
    while (n != 0)
    {
        y = n % 2;
        sum += x * y;
        x *= 10;
        n /= 2;
    }
    return sum;
}




int main () 
{
    int len=0;
    int OperateYear=13;
    int OperateMonth=12;
    int OperateDay=6;
    int OperateHour=13;
    int OperateMin=0;
    int OperateSec=32;
    unsigned int a[6];
    char buf[64];
    a[0] = dectobin(OperateYear);
    a[1] = dectobin(OperateMonth);
    a[2] = dectobin(OperateDay);
    a[3] = dectobin(OperateHour);
    a[4] = dectobin(OperateMin);
    a[5] = dectobin(OperateSec);
    sprintf(buf,"%06d%04d%05d%05d%06d%06d",a[0],a[1],a[2],a[3],a[4],a[5]);
    printf("%s",buf);

    uint8_t data[4];

    data[0] = ((buf[0]&0x0f)<<7)|((buf[1]&0x0f)<<6)|((buf[2]&0x0f)<<5)|((buf[3]&0x0f)<<4)|((buf[4]&0x0f)<<3)|((buf[5]&0x0f)<<2)|((buf[6]&0x0f)<<1)|(buf[7]&0x0f);
    data[1] = ((buf[8]&0x0f)<<7)|((buf[9]&0x0f)<<6)|((buf[10]&0x0f)<<5)|((buf[11]&0x0f)<<4)|((buf[12]&0x0f)<<3)|((buf[13]&0x0f)<<2)|((buf[14]&0x0f)<<1)|(buf[15]&0x0f);
    data[2] = ((buf[16]&0x0f)<<7)|((buf[17]&0x0f)<<6)|((buf[18]&0x0f)<<5)|((buf[19]&0x0f)<<4)|((buf[20]&0x0f)<<3)|((buf[21]&0x0f)<<2)|((buf[22]&0x0f)<<1)|(buf[23]&0x0f);
    data[3] = ((buf[24]&0x0f)<<7)|((buf[25]&0x0f)<<6)|((buf[26]&0x0f)<<5)|((buf[27]&0x0f)<<4)|((buf[28]&0x0f)<<3)|((buf[29]&0x0f)<<2)|((buf[30]&0x0f)<<1)|(buf[31]&0x0f);

    
    printf("\n%02X\n",data[0]);
    printf("\n%02X\n",data[1]);
    printf("\n%02X\n",data[2]);
    printf("\n%02X\n",data[3]);

     
   
}