如:当前毫秒数: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
我觉得我的方法很麻烦!
想请教下有没有更好的方法???