为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中指向 []byte 的 unsafe.Pointer

在 Go 中指向 []byte 的 unsafe.Pointer

Go
汪汪一只猫 2021-09-09 15:24:45
我正在尝试在 Go 中为我的 OpenGL 项目编写屏幕截图函数,我正在使用此处找到的 OpenGL 绑定:https://github.com/go-gl/glow这是我用来制作屏幕截图的代码,或者,这就是我正在处理的:    width, height := r.window.GetSize()    pixels := make([]byte, 3*width*height)    // Read the buffer into memory    var buf unsafe.Pointer    gl.PixelStorei(gl.UNPACK_ALIGNMENT, 1)    gl.ReadPixels(0, 0, int32(width), int32(height), gl.RGB, gl.UNSIGNED_BYTE, buf)    pixels = []byte(&buf) // <-- LINE 99这会在编译时触发以下错误:video\renderer.go:99: cannot convert &buf (type *unsafe.Pointer) to type []byte.如何转换unsafe.Pointer为字节数组?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

由于unsafe.Pointer已经是一个指针,所以不能使用指向 的指针unsafe.Pointer,但应该直接使用它。一个简单的例子:


bytes := []byte{104, 101, 108, 108, 111}


p := unsafe.Pointer(&bytes)

str := *(*string)(p) //cast it to a string pointer and assign the value of this pointer

fmt.Println(str) //prints "hello"


查看完整回答
反对 回复 2021-09-09
  • 2 回答
  • 0 关注
  • 342 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信