我希望将go语言中的[][]byte转换为C语言中的**char。换句话说,我有一个go语言中的字节矩阵,我想将其转换为C语言中的字符双指针。
请假设我必须使用[][]byte作为输入和**char作为输出。
我知道可以通过以下方式从[]byte转换为*char:
((*C.char)(unsafe.Pointer(&data[0])))
但是似乎不可能将此案例扩展到第二维。我尝试了一些相当复杂的东西,其中我将一个[][]byte打包成一个新的[]byte。然后我将该[]byte发送到一个C函数,该函数使用指针算术在正确位置指向新的[]byte以创建**char。
然而,这种转换给我带来了奇怪的行为,我的数据在几次迭代中是正确的,但在函数调用之间似乎被破坏了。
如果有人有任何想法,我会非常感激。
从我看到的回复中,还重要的是要说明我正在处理原始数据而不是字符串。因此,使用go byte类型会使原始数据损坏,如果添加C字符串终止符号。我只是使用C **char,因为char大小为1个字节。话虽如此,感谢您的回复。我能够根据我的需求修改接受的答案。