获取时间戳,从十进制转换为16进制(4字节)

获取时间戳,从十进制转换为16进制(4字节)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <time.h>

/*
 * 获取系统时间,这种方式获取得到的格式是: 星期 月 日 时间 年
 */
int printf_time(void)
{
    time_t timep;
    time(&timep);
    char *s = ctime(&timep);
    printf("date:%s",s);
    return 0;
}

/*
 * 获取系统时间,这种方式获取得到的格式是: 年-月-日 时:分:秒
 */
int get_time_ms(char *buff, int len)
{
    struct timeval tv;
    struct tm* ptm;
    char time_string[40];
    long milliseconds;

    if(buff == NULL)
    {
        printf("%s buff is NULL.\n", __func__);
        return -1;
    }

    gettimeofday(&tv, NULL);

    ptm = localtime (&(tv.tv_sec));

    strftime (time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm);  
    milliseconds = tv.tv_usec / 1000;
    snprintf (buff, len, "%s.%03ld", time_string, milliseconds);            
    return 0;
}
 
/*
 * value:  参数为要被转换的十进制
 * buffer: 为转换完成保存的十六进制的位置
 * length: 参数为转换后十六进制的长度
 */
void To_Hex(const unsigned int  value, char buffer[], int length)
{
    unsigned int i=(sizeof(unsigned  int)*2);
    unsigned int temp;
	int j=0;
    while(i--)
    {
        temp = (value&(0xf<<(4*i)))>>(4*i);
        if(temp>9)
            buffer[j] = 'A'+temp-10;
		else
			buffer[j] = '0'+temp;
		j++;
    }
	buffer[length] = '\0';
}

int main()
{
	char buf_hex[100];
    char buff[40];
    unsigned int time = 1666020829;

    memset(buf_hex,0,sizeof(buf_hex));
	To_Hex(time,buf_hex,8);
	printf ("time is :%s \n",buf_hex);

    get_time_ms(buff, sizeof(buff));
    printf("time:%s\n", buff);
    printf_time();

    memset(buff, 0, 40);
    FILE * fd = popen("date +%s" , "r");	// 获取当前系统时间戳
    fread(buff, 1, 40, fd);
    pclose(fd);
    printf("popen:%s",buff);

    memset(buf_hex,0,sizeof(buf_hex));
    To_Hex(atoi(buff), buf_hex, 8);		// 时间戳字符转整形
    printf ("popen is :%s \n",buf_hex);
    
	return 0;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值