【发布时间】:2013-01-27 19:36:56
【问题描述】:
我想将 go [][]byte 转换为 C **char。换句话说,我有一个字节矩阵,我想在 C 中转换为一个 char 双指针。
请假设我必须有一个 [][]byte 作为输入和一个 **char 作为输出。
我知道可以通过执行以下操作将 []byte 转换为 *char:
((*C.char)(unsafe.Pointer(&data[0])))
但似乎不可能将这种情况扩展到第二维。我已经尝试了一些非常复杂的方法,我将一个 [][]byte 打包到一个新的 []byte 中。然后我将该 []byte 发送到 C 函数,该函数使用指针算法创建一个 **char 以指向正确位置的新 []byte。
这种转换给我带来了奇怪的行为,我的数据在几次迭代中是正确的,但在函数调用之间似乎被破坏了。
如果有人有任何想法,我将不胜感激。
从我看到的回复中,声明我使用的是原始数据而不是字符串也很重要。因此是 go 字节类型。因此,如果添加 C 字符串终止符,原始数据将被破坏。我只是使用 C **char,因为 char 的大小是一个字节。也就是说,感谢您的回复。我能够根据自己的需要调整接受的答案。
【问题讨论】:
标签: go type-conversion cgo