我試圖將一個字節數組從 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) }我的最終目標是打印像 uint8_t 數組這樣的 C 代碼,當我成功做到這一點時,我將嘗試將數組從 C 代碼發送到 Go。
1 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
我將一個字節數組從 Go 傳遞到 C 函數。
我的目標是打印類似
uint8_t
數組的 C 代碼。
對于你的例子,
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
- 1 回答
- 0 關注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消