如:当前毫秒数:1450170093810
将其二进制形式由高位到低位,每8位转成十六进制,并输出,
求指教!!!
6 个解决方案
#1
什么叫“每8位转成十六进制”?
char a[100];
sprintf(a,"%llx",1450170093810);
char a[100];
sprintf(a,"%llx",1450170093810);
#2
引用 1 楼 jiht594 的回复:
什么叫“每8位转成十六进制”?
char a[100];
sprintf(a,"% 016llx",1450170093810 LL);
什么叫“每8位转成十六进制”?
char a[100];
sprintf(a,"% 016llx",1450170093810 LL);
#3
14501700938
假设其二进制形式为111000010101010001000110101010101010101010
从左到右,有高到底,转换成每八位对应十六进制
假设其二进制形式为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
我觉得我的方法很麻烦!
想请教下有没有更好的方法???
#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
作为一个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
//
#1
什么叫“每8位转成十六进制”?
char a[100];
sprintf(a,"%llx",1450170093810);
char a[100];
sprintf(a,"%llx",1450170093810);
#2
引用 1 楼 jiht594 的回复:
什么叫“每8位转成十六进制”?
char a[100];
sprintf(a,"% 016llx",1450170093810 LL);
什么叫“每8位转成十六进制”?
char a[100];
sprintf(a,"% 016llx",1450170093810 LL);
#3
14501700938
假设其二进制形式为111000010101010001000110101010101010101010
从左到右,有高到底,转换成每八位对应十六进制
假设其二进制形式为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
我觉得我的方法很麻烦!
想请教下有没有更好的方法???
#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
我觉得我的方法很麻烦!
想请教下有没有更好的方法???
#5
#6
作为一个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
//