【发布时间】:2015-01-10 16:55:57
【问题描述】:
以下代码的问题:
var x uint64 = 18446744073709551615
var y int64 = int64(x)
y 是 -1。在不丢失信息的情况下,这两种数字类型之间转换的唯一方法是使用编码器和解码器吗?
buff bytes.Buffer
Encoder(buff).encode(x)
Decoder(buff).decode(y)
请注意,在您的典型情况下,我不会尝试直接进行数字转换。我更关心维护随机数生成器的统计特性。
【问题讨论】:
-
y 是-1?你的操作系统是 32 位的还是 64 位的?
-
对投反对票的人来说,为什么投反对票? @VonC 64 位。
-
我没有投反对票(这里是赞成票)。我问操作系统是因为tip.golang.org/doc/go1.1#int,您只能在 32 位操作系统中看到 -1。
-
@VonC 我会的。我敢打赌,我们已经将此 Varnish 设置为 32 位运行!
-
如果
y不是 -1,你希望它是什么?您想在转换后断言x == y并且如果不是则有错误/恐慌?