用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
//

注意!

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



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