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

我正在尝试在 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为字节数组?


汪汪一只猫
浏览 343回答 2
2回答

RISEBY

由于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 pointerfmt.Println(str) //prints "hello"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go