Как отправить байтовый массив из Go в C - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь передать байтовый массив из GO в функцию C, но я не могу этого сделать, вот мой код:

package main
 /*

 #include <stdint.h>
 #include "api.h"
 #include "parameters.h"
 #include "lilliput-ae.h"
 #include "tool.h"


 void print(void *b)
  {
    printf("%d",b[0]);
    printf("%d",b[5]);
  }


  */
  import "C"
  import "unsafe"



   func main() {

     a := [16]byte{16, 8, 7, 4, 12, 6, 7, 8, 9, 10, 11, 7, 16, 14, 15, 1}
     ptr := unsafe.Pointer(&a[0])
     C.print(ptr)
   }

Моя конечная цель - напечатать код C, например, uint8_tмассив, и когда мне это удастся, я попытаюсь отправить массив из кода C на Go.

1 Ответ

0 голосов
/ 02 ноября 2019

Я передаю байтовый массив из функции Go в C.

Моя цель - напечатать код C, например uint8_t array.


Например,

package main

/*
#include <stdio.h>
#include <stdint.h>

void print(void *p) {
    uint8_t *b = p;
    printf("%d ",b[0]);
    printf("%d ",b[5]);
    printf("\n");
}
*/
import "C"

import (
    "fmt"
    "unsafe"
)

func main() {
    a := [16]byte{16, 8, 7, 4, 12, 6, 7, 8, 9, 10, 11, 7, 16, 14, 15, 1}
    fmt.Println(a)
    ptr := unsafe.Pointer(&a[0])
    C.print(ptr)
}

Вывод:

[16 8 7 4 12 6 7 8 9 10 11 7 16 14 15 1]
16 6 
...