Jon*_*eet 11
好吧,你没有指定一个平台或你感兴趣的二进制值,但是在.NET BitConverter.DoubleToInt64Bits中,你可以很容易地得到IEEE 754位的值.
在Java中Double.doubleToLongBits,它有同样的功能.
请注意,如果您有一个诸如"125252525235558554452221545332224587265"之类的值,那么您获得的信息可能比双头可以准确存储的信息更多.
在C中,你可以这样做,这是union构造的经典用法:
int i;
union {
double x;
unsigned char byte[sizeof (double)];
} converter;
converter.x = 5.5555555555556e18;
for(i = 0; i < sizeof converter.byte; i++)
printf("%02x", converter.byte[i]);
Run Code Online (Sandbox Code Playgroud)
如果你把main()它粘在一个并运行它,它可能会打印出这样的东西:
~/src> gcc -o floatbits floatbits.c
~/src> ./floatbits
ba b5 f6 15 53 46 d3 43
Run Code Online (Sandbox Code Playgroud)
但请注意,这当然是依赖于平台的字节顺序.以上是来自在Sempron CPU上运行的Linux系统,即它的小端.
如果你的意思是你想自己做,那么这不是一个编程问题。
如果你想让计算机做到这一点,最简单的方法是使用浮点输入例程,然后以十六进制形式显示结果。在 C++ 中:
double f = atof ("5.5555555555556E18");
unsigned char *b = (unsigned char *) &f;
for (int j = 0; j < 8; ++j)
printf (" %02x", b [j]);
Run Code Online (Sandbox Code Playgroud)