【发布时间】:2021-10-24 21:27:36
【问题描述】:
理论上 int64 适合 uint64,当然它们的数值会有所不同,因为第一个位是为 int64 上的符号保留的,但是为什么我不能进行这种转换呢?这对我来说似乎有效
import (
"fmt"
"math"
)
func main() {
var randomNum uint64 = math.MinInt64
fmt.Println(randomNum)
}
产生错误
constant -9223372036854775808 overflows uint64
这里的math.MinInt64 是-9223372036854775808,技术上是一个适合63 位加号的数字。
我主要研究这个,因为我想将 8 bytes 转换回具有正确符号的 int64,但到目前为止我只看到返回 uint64 的函数
binary.LittleEndian.Uint64(bytesArrays[0:8])
【问题讨论】:
-
"4 个字节回到 int64" --> 嗯,我希望 8 个字节。
-
@Keldorn 你的
-3有什么关系?你甚至运行了提供的代码吗?有明显的溢出错误
标签: go