当前位置: 首页 > 面试题库 >

前往:将uint64转换为int64而不会丢失信息

简烨烁
2023-03-14
问题内容

以下代码存在问题:

var x uint64 = 18446744073709551615
var y int64 = int64(x)

是,y-1。在不丢失信息的情况下,在这两种数字类型之间进行转换以使用编码器和解码器的唯一方法是吗?

buff bytes.Buffer
Encoder(buff).encode(x)
Decoder(buff).decode(y)

注意,在您的典型情况下,我不尝试直接进行数值转换。我更关心维护随机数生成器的统计属性。


问题答案:

看到-1与以32位运行的进程一致。

例如,请参阅Go1.1发行说明(已引入uint64

x := ^uint32(0) // x is 0xffffffff
i := int(x)     // i is -1 on 32-bit systems, 0xffffffff on 64-bit
fmt.Println(i)

使用fmt.Printf("%b\n",y)可以帮助您查看发生了什么

事实证明,OP实战程序([在注释中]确认它最初以32位运行(因此,此答案),但是无论如何,然后意识到184467440737095516150xffffffffffffffff(-1):请参见ANisus答案;



 类似资料:
  • 问题内容: 尝试在Swift中调用dispatch_time实在令人难以理解,原因如下: 结果为错误:“找不到接受提供的参数的’*’重载”。 NSEC_PER_SEC是UInt64,因此可以进行一些实验: 结果与上述相同 “一行上的连续语句中的结果必须用’;’分隔” 结果为“预期的’,’分隔符” “一行上的连续语句中的结果必须用’;’分隔” 等等 该死的Swift编译器,我放弃了。如何将UInt6

  • 我有一个. csv文件编码在UCS-2LE BOM。我需要对它进行一些更改,我想使用preg_replace,所以我想将文件转换为UTF-8。然而,当我转换它时,所有的空格都消失了,所有属于同一行的单词都粘在一起。 我的代码是: 进行转换的正确方法是什么,这样我就不会丢失任何空格或字符? 转换前-Excel中的屏幕截图: 转换文件后:

  • 我试图以CSV格式保存py spark . SQL . data frame . data frame(也可以是其他格式,只要它易于阅读)。 到目前为止,我找到了几个示例来保存DataFrame。然而,每次我编写它时,它都会丢失信息。 数据集示例: 为了将这个文件保存为CSV,我首先尝试了这个解决方案: 不幸是,这导致了以下错误: 这就是我尝试另一种可能性的原因,将spark数据帧转换成panda

  • 在我的Web服务方法中,我有一个类型为的输入。我应该在左侧添加两个零,所以我将其转换为并将两个零合并,然后我应该再次转换为Long,我发现java中的Long类型忽略了左零。如何在Long值中保持左零?

  • 问题内容: 嗨,我有一个NSMutableArray,我尝试这样做: 如何将Int64变量添加到NSMutableArray()? 问题答案: 您正在使用基础数组(NSMutableArray),因此应使用基础编号对象: 您还可以使用本机swift数组:

  • 我想将字符串转换为int64。我从<code>strconv ParseInt实际上返回一个int64: 所以如果我想从一个字符串中获取一个int64,我应该避免使用Atoi,而是使用ParseInt吗?还是有Atio64藏在某个地方?