在这个问题中,蜥蜴比尔问道如何显示 float 或 double 的二进制表示.
我想知道的是,给定适当长度的二进制字符串,我如何执行反向操作(在 C# 中)?换句话说,如何将二进制字符串转换为浮点数或双精度数?
作为旁注,是否有任何位字符串不会产生有效的浮点数或双精度数?
编辑:二进制字符串是指由 0 和 1 组成的字符串。
所以,我的输入将是这样的字符串:
01010101010101010101010101010101
我的输出应该是一个浮点数。 (或者,如果字符串中有 64 位,则为双精度值。)
double d1 = 1234.5678;
string ds = DoubleToBinaryString(d1);
double d2 = BinaryStringToDouble(ds);
float f1 = 654.321f;
string fs = SingleToBinaryString(f1);
float f2 = BinaryStringToSingle(fs);
// ...
public static string DoubleToBinaryString(double d)
{
return Convert.ToString(BitConverter.DoubleToInt64Bits(d), 2);
}
public static double BinaryStringToDouble(string s)
{
return BitConverter.Int64BitsToDouble(Convert.ToInt64(s, 2));
}
public static string SingleToBinaryString(float f)
{
byte[] b = BitConverter.GetBytes(f);
int i = BitConverter.ToInt32(b, 0);
return Convert.ToString(i, 2);
}
public static float BinaryStringToSingle(string s)
{
int i = Convert.ToInt32(s, 2);
byte[] b = BitConverter.GetBytes(i);
return BitConverter.ToSingle(b, 0);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)