go - Golang中的负整数到二进制
问题描述
如何使用二进制补码表示法将负整数表示为 Go 中的二进制?
例如:
n := int64(-1)
fmt.Printf("%b", n)
fmt.Println(strconv.FormatInt(n, 2))
两行都打印-1
。结果应该是这样的ffffffffffffffff
。
解决方案
很抱歉,您的意思是要探索 int64 值是如何存储在内存中的吗?您将需要使用该unsafe
包来强制重新解释 go 中的值。
此代码执行您想要的操作:
package main
import (
"fmt"
"unsafe"
)
func main() {
a := int64(-1)
fmt.Printf("%x\n", *(*[8]byte)(unsafe.Pointer(&a)))
}
推荐阅读
- maven - 在提交 Maven 项目的 Apache Storm 拓扑时激活配置文件(无需重新编译)
- ruby - 为什么我会收到类型错误:如果 max == ele % 0,则无法将第 11 行的范围强制转换为整数?
- c - 哪个更快:静态数组与非静态数组?
- python - 将 pyqt 按钮移出按钮列表
- qt - 您如何检查您是否处于交互式 qmake 会话中?我想使用 qmake prompt()
- c - C中的打印函数mutex不能正常工作
- java - UTF-8 java 编码边缘情况
- c++ - 使用 Boost/Wave C/C++ 预处理器的选择性宏扩展
- laravel - 从 vue 组件的公共文件夹中导入 js 文件(Laravel)
- azure - 使用 masstransit 向 Azure 服务总线主题中的特定订阅者组发送消息