golang报错: cannot use pKey (type *_Ctype_char) as type *_Ctype_uchar in assignment

go语言和C语言不同,无法直接通过( *_Ctype_char)的方式进行强制类型转换。

但是可以通过  unsafe.Pointer 进行进行指针类型的转换。

示例如下:

 

var ret C.int = 0 
var key string = "1234567811111111"
var inData string = "1111111122222222"
    
//对应C语言中的void*
var pContext unsafe.Pointer
    
var nKeynum C.int = 1 

//将go语言中的string转换成*C.char类型
var pKey = (C.CString(key))
var nKeyLen = C.uint(len(key))

var pInData = C.CString(inData)
var nInDataLen = C.uint(len(inData))

var pOutData *C.uchar
var pOutDataLen *C.uint

//将*C.char转换成*C.uchar类型
var pKey2 = (*C.uchar)(unsafe.Pointer(pKey))
var pInData2 = (*C.uchar)(unsafe.Pointer(pInData))

 

 

如果对您有帮助,请点个赞吧。

你可能感兴趣的:(go,指针,golang,字符串)