gpt4 book ai didi

go - 如何将 [1024]C.char 转换为 [1024]byte

转载 作者:IT王子 更新时间:2023-10-29 01:24:11 43 4
gpt4 key购买 nike

如何转换此 C(数组)类型:

char my_buf[BUF_SIZE];

为此 Go(数组)类型:

type buffer [C.BUF_SIZE]byte

?尝试进行接口(interface)转换时出现此错误:

cannot convert (*_Cvar_my_buf) (type [1024]C.char) to type [1024]byte

最佳答案

最简单和最安全的方法是将其复制到一个 slice 中,而不是专门复制到[1024]byte

mySlice := C.GoBytes(unsafe.Pointer(&C.my_buff), C.BUFF_SIZE)

要在没有副本的情况下直接使用内存,您可以通过 unsafe.Pointer 对其进行“强制转换”。

mySlice := (*[1 << 30]byte)(unsafe.Pointer(&C.my_buf))[:int(C.BUFF_SIZE):int(C.BUFF_SIZE)]
// or for an array if BUFF_SIZE is a constant
myArray := *(*[C.BUFF_SIZE]byte)(unsafe.Pointer(&C.my_buf))

关于go - 如何将 [1024]C.char 转换为 [1024]byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532523/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com