相关疑难解决方法(0)

如何在go中将[] [] byte转换为**char

我想从go [] []字节转换为C**char.换句话说,我有一个字节矩阵,我想转换为C中的char双指针.

请假设我必须有一个[] []字节作为输入,**char作为输出.

我知道可以通过执行以下操作从[] byte转换为*char:

((*C.char)(unsafe.Pointer(&data[0])))
Run Code Online (Sandbox Code Playgroud)

但似乎不可能将这种情况扩展到第二个维度.我尝试了一些非常复杂的东西,我将[] []字节打包成一个新的[]字节.然后我将该[]字节发送到C函数,该函数使用指针算法创建一个**char,指向正确位置的新[]字节.

然而,这种转换给了我奇怪的行为,我的数据在几次迭代中是正确的,但在函数调用之间似乎被破坏了.

如果有人有任何想法,我会非常感激.

从响应中我看到,说明我正在处理原始数据而不是字符串也很重要.因此go字节类型.因此,如果添加了C字符串终止符,原始数据将被破坏.我只是使用C**char,因为char的大小是一个字节.这就是说,谢谢你们的回应.我能够根据自己的需要调整接受的答案.

type-conversion go cgo

5
推荐指数
1
解决办法
2210
查看次数

标签 统计

cgo ×1

go ×1

type-conversion ×1