var originalMsg *C.uchar
C.ecall_pay_w(8, 10, &originalMsg, &signature)
originalMsgStr := fmt.Sprintf("%c", originalMsg)
//Todo convert originalMstStr to same value with originalMsg
我必须将go str(originalMsgStr)转换为* C.uchar类型,该值与originalMsg相同。
我该怎么做?
最佳答案
我不了解Go的详细信息,但不要忘记,在C语言中,*C.uchar
类似于unsigned char *
,它通常用于引用字符串(以Null终止的字符数组)。
在这里,您使用fmt.Sprintf("%c", originalMsg)
,而%c
期望使用一个字符,因此,除了关于如何将结果字符串转换为*C.uchar
的语言细节之外,您很可能已经丢失了内容。
%c对应的Unicode代码点表示的字符
从https://golang.org/pkg/fmt/#hdr-Printing
关于c - CGo将go字符串转换为* C.uchar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59827026/