gpt4 book ai didi

c - 将字节数组从 go 传递到 cgo

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:54 24 4
gpt4 key购买 nike

我有以下C代码

uint32_t cHash32(const char *s, size_t len) { return util::Hash32(s, len); }

我是从一个go项目中调用它的,如下所示

func Hash32(s []byte) uint32 {
return uint32(C.cHash32((*C.char)(unsafe.Pointer(&s)), C.size_t(len(s))))
}

不知何故结果被破坏了。

根据 python 绑定(bind)到同一库(谷歌的 farmhash),当传递“hi”时,预期结果应该是 4063302914。

我想假设 s 可以翻译成 *C.char 有点天真,不是吗!

如何将 s 的内容作为 *C.char 传递?

最佳答案

是的,您可以通过 C.CString 在 Go 中创建 *C.char。 google playground 不允许使用 cgo,因此您需要下载此链接并在本地运行才能使用它。

http://play.golang.org/p/inthA1i0C2

将字节 slice 转换为字符串,然后转换为 *char C.CString(string([]byte("bytes")))

关于c - 将字节数组从 go 传递到 cgo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357414/

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