如:當前毫秒數:1450170093810
將其二進制形式由高位到低位,每8位轉成十六進制,並輸出,
求指教!!!
6 个解决方案
什么叫“每8位轉成十六進制”?
char a[100];
sprintf(a,"%llx",1450170093810);
引用 1 樓 jiht594 的回復:
什么叫“每8位轉成十六進制”?
char a[100];
sprintf(a,"%
016llx",1450170093810
LL);
14501700938
假設其二進制形式為111000010101010001000110101010101010101010
從左到右,有高到底,轉換成每八位對應十六進制
這是我寫的程序:
#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
我覺得我的方法很麻煩!
想請教下有沒有更好的方法???