第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將 uint8_t 數(shù)組從 C 發(fā)送到 GO

如何將 uint8_t 數(shù)組從 C 發(fā)送到 GO

Go
不負(fù)相思意 2023-07-31 16:47:10
我想將 uint8_t 數(shù)組從 C 發(fā)送到 GO,但是當(dāng)我像指針一樣發(fā)送數(shù)組時(shí),我不知道如何讀取它并將其保存在 GO 中,例如 byte[] 數(shù)組:package main/*#include <stdint.h>uint8_t Plaintext[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};uint8_t * send_data( )   {     return  Plaintext;   }*/import "C"import "unsafe"import "fmt"func main() {    data := [16]byte{}    p := C.send_data()    //already try  data = C.send_data()    fmt.Println(p)    data = p // don't know how do this ?}objectif 是在 go 中包含數(shù)據(jù)字節(jié)數(shù)組,如下所示:data[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}我嘗試了很多解決方案,但每次我有日志說“不能使用(funcliteral)()(類型*_Ctype_uchar)作為類型“uint8”或“byte”...
查看完整描述

1 回答

?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

我想將 uint8_t 數(shù)組從 C 發(fā)送到 Go [并且作為數(shù)組或切片]


對(duì)于你的例子,


package main


/*

#include <stdint.h>


uint8_t Plaintext[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};


uint8_t *send_data( ) {

    return  Plaintext;

}

*/

import "C"


import (

    "fmt"

    "math"

    "unsafe"

)


func main() {

    // your example

    data := (*[16]byte)(unsafe.Pointer(C.send_data()))

    fmt.Printf("\n%T:\n%d %d : %v\n", data, len(data), cap(data), *data)


    // array example

    const c = 16 // array length is constant

    a := (*[c]byte)(unsafe.Pointer(C.send_data()))

    fmt.Printf("\n%T:\n%d %d : %v\n", a, len(a), cap(a), *a)


    // slice example

    var v = 16 // slice length is variable

    var s []byte

    const vmax = math.MaxInt32 / unsafe.Sizeof(s[0])

    s = (*[vmax]byte)(unsafe.Pointer(C.send_data()))[:v:v]

    fmt.Printf("\n%T:\n%d %d : %v\n", s, len(s), cap(s), s)

}

輸出:


[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]


*[16]uint8:

16 16 : [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]


[]uint8:

16 16 : [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]


查看完整回答
反對(duì) 回復(fù) 2023-07-31
  • 1 回答
  • 0 關(guān)注
  • 216 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)