gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:38:41 25 4
gpt4 key购买 nike

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

最佳答案

首先,该方法不会将其转换为十六进制,而是将位转换为 Int64,然后您可以根据需要使用 将其转换为十六进制字符串ToString("X") 或类似的东西。

有符号的 Int64 和无符号的 UInt64 在本质上没有区别——唯一的区别是程序如何解释 64 位字。

64 位 double 也是一个 64 位字,在引擎盖下——但一些处理器,如英特尔 x86 系列处理器,支持 80 位 double float ,而不仅仅是 64 位 double 。该方法只是允许 C# 将位解释为 64 位 double (或者将 80 位 double 转换为 64 位 double ,如果这是它必须使用的),就好像它是 64 位有符号整数一样.如果您想将其解释为 64 位 unsigned int,只需转换它(使用 unchecked 以防止 c# 崩溃):

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

将 double 的位解释为 Int64UInt64 没有意义——他们只是想给我们一种表示 a 的方法将 64 位值加倍以满足我们可能需要的任何位操作。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com