我想将go [] []字节转换为C ** char。换句话说,我有一个字节矩阵,我想在C中将其转换为char双指针。
请假设我必须将[] []字节作为输入,并将** char作为输出。
我知道可以通过执行以下操作将[] byte转换为* char:
((*C.char)(unsafe.Pointer(&data[0])))
但似乎不可能将这种情况扩展到第二维。我尝试了一些非常精细的操作,在其中将[] []字节打包到一个新的[] byte中。然后,我将该[]字节发送到C函数,该函数使用指针算术在正确的位置指向新的[]字节,从而创建一个** char。
但是,这种转换给我带来了奇怪的行为,即我的数据经过几次迭代是正确的,但在两次函数调用之间似乎被破坏了。
如果有人有任何想法,我将不胜感激。
从响应中我看到,声明我正在使用原始数据而不是字符串也很重要。因此,go字节类型。因此,如果添加C字符串终止符,原始数据将被破坏。我只是使用C ** char,因为char的大小为一个字节。也就是说,感谢您的答复。我能够根据自己的需要调整接受的答案。
慕斯王
相关分类