c# - C# 中的方法 BitConverter.DoubleToInt64Bits (Double)

标签 c#

此方法将 double 值转换为其十六进制格式的位表示形式。为什么指定转换后的值是有符号的 int64 ?与 unsigned int64 有什么区别? double 的二进制表示是唯一的。

最佳答案

首先,该方法不会将其转换为十六进制,而是将这些位转换为 Int64 ,然后您可以选择将其转换为十六进制字符串,使用 ToString("X")或类似的一些。

签名的 Int64 之间没有区别和未签名UInt64在幕后——唯一的区别是程序如何解释 64 位字。

从本质上讲,64 位 double 也是 64 位字,但某些处理器(例如 intel x86 系列处理器)支持 80 位 double 浮点,而不仅仅是 64 位 double 。该方法只是允许 C# 解释 64 位 double 的位(或者将 80 位 double 转换为 64 位 double ,如果这是它必须处理的),就像它是 64 位有符号 int 一样。如果您想将其解释为 64 位无符号 int,只需将其转换(使用 unchecked 来防止 c# 崩溃):

ulong bitsForDouble;
unchecked {
    bitsForDouble = (ulong)BitConverter.DoubleToInt64Bits(someDoubleValue);
}

将 double 的位解释为 Int64 是没有意义的。或UInt64 -- 他们只是想为我们提供一种方法来表示 64 位值中的 double 值,以满足我们可能需要的任何位操作。

关于c# - C# 中的方法 BitConverter.DoubleToInt64Bits (Double),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774304/

相关文章:

c# - JSON不能反序列化为对象,需要数组?

c# - 泛型类的空值

c# - 如何以int ID为null的条件过滤DataTable

c# - Crystal Report 导出为 pdf 阿拉伯语字体较小 visual studio 2015

c# - 发现多个导出与 MEF ImportMany 的约束异常相匹配

c# - WPF 自动换行 : Missing words when using custom font

c# - Winforms 中应用程序范围组件应该放在哪里?

c# - 我在 EF Core Code First 方法中使用 AutoFixture 时遇到异常 "AutoFixture.ObjectCreationExceptionWithPath"

c# - 使用 HtmlAgilityPack 解析未从网页关闭的标签

c# - MVC : Retrieving form values after submitting