65,202
社区成员




char YA_HEX[20] = "bf0884bd88c6ec6e";
double YA_Num;
int (&x)[2] = (int(&)[2])YA_Num;
sscanf(YA_HEX, "%08x", &x[0]);
sscanf(YA_HEX + 8, "%08x", &x[1]);
x[0] = htonl(x[0]);
x[1] = htonl(x[1]);
printf("%f", YA_Num);
虽然这样读入后 YA_Num 的内存可以对应上, 但对应的double 值并不是 96180.1541071667 而是:
21302471929538717000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000.000000#include <stdio.h>
int main() {
char YA_HEX[20] = "91133977427BF740";
double YA_Num;
char *p;
int i,v;
p=(char *)&YA_Num;
for (i=0;i<8;i++) {
sscanf(YA_HEX+i*2, "%2x", &v);
p[i]=(char)v;
}
printf("%.15lg", YA_Num);
return 0;
}
//96180.1541071667
#include <stdio.h>
int main() {
char YA_HEX[20] = "bf0884bd88c6ec6e";
double YA_Num;
char *p;
int i,v;
p=(char *)&YA_Num;
for (i=0;i<8;i++) {
sscanf(YA_HEX+i*2, "%2x", &v);
p[i]=(char)v;
}
printf("%.15lg", YA_Num);
return 0;
}
//2.13024719295387e+226
//
char YA_HEX[20] = "bf0884bd88c6ec6e";
double YA_Num;
int (&x)[2] = (int(&)[2])YA_Num;
sscanf(YA_HEX, "%08x", &x[0]);
sscanf(YA_HEX + 8, "%08x", &x[1]);
x[0] = htonl(x[0]);
x[1] = htonl(x[1]);
printf("%f", YA_Num);
虽然这样读入后 YA_Num 的内存可以对应上, 但对应的double 值并不是 96180.1541071667 而是:
21302471929538717000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000.000000[/quote]
大神,你是怎么看内存对应上的?我拿vc 调试看的内容是这个
char YA_HEX[20] = "bf0884bd88c6ec6e";
double YA_Num;
int (&x)[2] = (int(&)[2])YA_Num;
sscanf(YA_HEX, "%08x", &x[0]);
sscanf(YA_HEX + 8, "%08x", &x[1]);
x[0] = htonl(x[0]);
x[1] = htonl(x[1]);
printf("%f", YA_Num);