gpt4 book ai didi

go - C char name[8] 到 GoLang Name [8]byte

转载 作者:IT王子 更新时间:2023-10-29 02:14:19 26 4
gpt4 key购买 nike

我有一个填充 C 结构的 C 函数:

typedef struct {
char name[8];
}

我需要将数据复制到具有相同内容的 Go 语言结构中:

type sData struct {
Name [8]byte
}

该结构具有多种尺寸的参数:4、12、32,因此如果有一个函数可以处理不止一种尺寸,那就太好了。

谢谢

最佳答案

为了使其更加通用,您可以将 C 字符数组分解为 *C.char,然后使用 unsafe.Pointer 将其转换回大批。

func charToBytes(dest []byte, src *C.char) {
n := len(dest)
copy(dest, (*(*[1024]byte)(unsafe.Pointer(src)))[:n:n])
}

或者更简单一些

func charToBytes(src *C.char, sz int) []byte {
dest := make([]byte, sz)
copy(dest, (*(*[1024]byte)(unsafe.Pointer(src)))[:sz:sz])
return dest
}

关于go - C char name[8] 到 GoLang Name [8]byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446623/

26 4 0