将double值转换为二进制值

raj*_*raj 5 c# binary double types

如何将double值转换为二进制值.

我有一些像这样的价值125252525235558554452221545332224587265我想将其转换为二进制格式.所以我保持双倍然后尝试转换为二进制(1&0's)..我正在使用C#.net

Jon*_*eet 11

好吧,你没有指定一个平台或你感兴趣的二进制值,但是在.NET BitConverter.DoubleToInt64Bits中,你可以很容易地得到IEEE 754位的值.

在Java中Double.doubleToLongBits,它有同样的功能.

请注意,如果您有一个诸如"125252525235558554452221545332224587265"之类的值,那么您获得的信息可能比双头可以准确存储的信息更多.


unw*_*ind 6

在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系统,即它的小端.


wal*_*lyk 0

如果你的意思是你想自己做,那么这不是一个编程问题。

如果你想让计算机做到这一点,最简单的方法是使用浮点输入例程,然后以十六进制形式显示结果。在 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)