C语言十六进制打印demo

C语言日志打印demo

/***********************************************************
* 日志信息
************************************************************/
#define LOG_ERROR(info, args...)                                                                \
    do {                                                                                        \
        FILE *_log_fp = fopen("/home/log.txt", "a+");                \
        if (_log_fp) {                                                                            \
            time_t t;                                                                            \
            time(&t);                                                                            \
            struct tm *lt = localtime(&t);                                                        \
            fprintf(_log_fp, "%02d-%02d-%02d %02d:%02d:%02d ",                                    \
                lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday,                                \
                lt->tm_hour, lt->tm_min, lt->tm_sec);                                            \
            fprintf(_log_fp, info, ##args);                                                         \
            fprintf(_log_fp, "\t[%s:%d]\n", __FILE__, __LINE__);                                \
            fclose(_log_fp);                                                                    \
        }                                                                                        \
    } while(0)



#define PRINT_HEX(lable, buf, len)                                             \
    do                                                                         \
    {                                                                          \
        if (buf)                                                               \
        {                                                                      \
            int xix;                                                           \
            printf("%s,%s,[%d bytes]:\n", __FUNCTION__, lable, len);           \
            for (xix = 0; xix < len; xix++)                                    \
                printf("0x%02x%s", (buf)[xix], (xix % 16 == 15) ? "\n" : ","); \
            printf("\n");                                                      \
        }                                                                      \
    } while (0);



// for test
int print_hex(const char *tag, void *d, int dlen)
{
    int i = 0;
    printf("unsigned char %s[%d] = {\n", tag?tag:"C", dlen);
    for (i=0; i<dlen; i++) {
        if (i%16==0)
            printf("\t");

        printf("0x%02X", ((unsigned char *)d)[i]);

        if (i != dlen -1)
            printf(", ");

        if (i && (i+1)%16 == 0)
            printf("\n");
    }
    printf("};\n");

    return 0;
}

void print_data(char *info, unsigned char *data, unsigned int len)
{
    int i = 0;
    if (info) printf("%s\n", info);

    for (i = 0; i < len; i++) {
        if (i && i % 16 == 0) printf("\n");
        printf("0x%02x ", data[i]);
    }
    printf("\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值