首页 > 解决方案 > Golang中的负整数到二进制

问题描述

如何使用二进制补码表示法将负整数表示为 Go 中的二进制?
例如:

n := int64(-1)
fmt.Printf("%b", n)
fmt.Println(strconv.FormatInt(n, 2))

两行都打印-1。结果应该是这样的ffffffffffffffff

标签: gobinarynumerictwos-complement

解决方案


很抱歉,您的意思是要探索 int64 值是如何存储在内存中的吗?您将需要使用该unsafe包来强制重新解释 go 中的值。

此代码执行您想要的操作:

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    a := int64(-1)
    fmt.Printf("%x\n", *(*[8]byte)(unsafe.Pointer(&a)))
}

推荐阅读