用C语言如何获取当前系统的当前毫秒数,每八位转换成十六进制,并做统计由高到底按顺序输出????,重点是后边的转换!!!



如:当前毫秒数:1450170093810
将其二进制形式由高位到低位,每8位转成十六进制,并输出,

求指教!!!

6 个解决方案

#1


什么叫“每8位转成十六进制”?

char a[100];
sprintf(a,"%llx",1450170093810);

#2


引用 1 楼 jiht594 的回复:
什么叫“每8位转成十六进制”?

char a[100];
sprintf(a,"% 016llx",1450170093810 LL);

#3


14501700938
假设其二进制形式为111000010101010001000110101010101010101010
从左到右,有高到底,转换成每八位对应十六进制

#4


这是我写的程序:
#include <stdio.h>    
#include <sys/time.h>  
//获取十进制毫秒数二进制位数函数
int num_bin(long time){
int num=0;
while(time!=0)
    {
        time/=2;
        num++;
    }
return num;
}
//获取系统当前时间毫秒数十六进制形式函数
void binhex(int num,long time,int *hex){
int j; 
for(j=0;j<num;j++){
hex[j] = time & 0XFF;
time=time>>8; 
}
}
//获取当前时间毫秒数   
long getCurrentTime()    
{    
    struct timeval tv;    
    gettimeofday(&tv,NULL);    
    long time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
return time;    
}    
        
int main()    
{  
long time = getCurrentTime();
int num = num_bin(time); 
    printf("%ld\n",time);
int NUM = (num/8 +1);
printf("NUM=%d\n", NUM);
int hex[NUM];
binhex(NUM,time,hex); 
int n;
for(n=0;n<NUM;n++){
printf("%02X ",hex[n]);
}
printf("\n");
    return 0;    
}  

其中的一个运行结果是:
1450193000132
NUM=6
C4 16 3D A6 51 01
我的意图就是得到这种答案:C4 16 3D A6 51 01
我觉得我的方法很麻烦!
想请教下有没有更好的方法???

#6


引用 4 楼 vshuo7013 的回复:
这是我写的程序:
#include <stdio.h>    
#include <sys/time.h>  
//获取十进制毫秒数二进制位数函数
int num_bin(long time){
int num=0;
while(time!=0)
    {
        time/=2;
        num++;
    }
return num;
}
//获取系统当前时间毫秒数十六进制形式函数
void binhex(int num,long time,int *hex){
int j; 
for(j=0;j<num;j++){
hex[j] = time & 0XFF;
time=time>>8; 
}
}
//获取当前时间毫秒数   
long getCurrentTime()    
{    
    struct timeval tv;    
    gettimeofday(&tv,NULL);    
    long time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
return time;    
}    
        
int main()    
{  
long time = getCurrentTime();
int num = num_bin(time); 
    printf("%ld\n",time);
int NUM = (num/8 +1);
printf("NUM=%d\n", NUM);
int hex[NUM];
binhex(NUM,time,hex); 
int n;
for(n=0;n<NUM;n++){
printf("%02X ",hex[n]);
}
printf("\n");
    return 0;    
}  

其中的一个运行结果是:
1450193000132
NUM=6
C4 16 3D A6 51 01
我的意图就是得到这种答案:C4 16 3D A6 51 01
我觉得我的方法很麻烦!
想请教下有没有更好的方法???

作为一个C程序员,对
 scanf,sscanf,fscanf
 printf,sprintf,fprintf
这类函数的用法,还是要做到“拳不离手,曲不离口”的。

#include <stdio.h>
int main() {
    long long int ms=1450193000132LL;
    printf("%016llX\n",ms);
    for (int i=0;i<8;i++) {
        printf("%02X ",((unsigned char *)&ms)[i]);
    }
    printf ("\n");
    return 0;
}
//00000151A63D16C4
//C4 16 3D A6 51 01 00 00
//
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告