dpoxk64080 2016-05-25 20:04
浏览 35

C字符名称[8]到GoLang名称[8]字节

I've got a C function that fills a C struct:

typedef struct {
  char name[8];
}

I need to copy data into Go lang struct that has the same content:

type sData struct {
  Name [8]byte
}

The structure has parameters of multiple sizes: 4, 12, 32 so it would be nice to have a function that deals with more than just one size.

thanks

  • 写回答

1条回答 默认 最新

  • duankousong9637 2016-05-25 20:36
    关注

    To make this a little more generic, you can decompose the C char array to a *C.char, then use unsafe.Pointer to cast it back to an array.

    func charToBytes(dest []byte, src *C.char) {
        n := len(dest)
        copy(dest, (*(*[1024]byte)(unsafe.Pointer(src)))[:n:n])
    }
    

    Or maybe a little easier

    func charToBytes(src *C.char, sz int) []byte {
        dest := make([]byte, sz)
        copy(dest, (*(*[1024]byte)(unsafe.Pointer(src)))[:sz:sz])
        return dest
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了