草庐IT

CHAR_LENGTH

全部标签

go - C char name[8] 到 GoLang Name [8]byte

我有一个填充C结构的C函数:typedefstruct{charname[8];}我需要将数据复制到具有相同内容的Go语言结构中:typesDatastruct{Name[8]byte}该结构具有多种尺寸的参数:4、12、32,因此如果有一个函数可以处理不止一种尺寸,那就太好了。谢谢 最佳答案 为了使其更加通用,您可以将C字符数组分解为*C.char,然后使用unsafe.Pointer将其转换回大批。funccharToBytes(dest[]byte,src*C.char){n:=len(dest)copy(dest,(*(*[

c++ - 如何从用 C/C++ 编写的 DLL 调用返回类型为 char* 或字符串的导出函数?

我们设计的C/C++DLL是这样的:WIN32_DLL_EXPORTintFnRetInt(inti){....return32;}WIN32_DLL_EXPORTchar*FnRetString(){return"THISISATESTSTRING";}当我们在Go中使用系统调用调用这两个函数时:hd:=syscall.NewLazyDLL(dll_path)proc:=hd.NewProc(dll_func_name)ret:=proc.Call()我们发现:FnRetInt工作正常,但FnRetString没有。proc.Call返回类型是uintptr,我们如何将其更改为我们想

dictionary - 戈朗 : How to create unknown (dynamic) Map length

我可以通过创建一个“静态”maptypemmap[int]map[int]map[int]bool但是“键”的长度是动态的:|---unknownlen--|m[1][2][3][4][2][0]=true或|---unklen--|m[1][2][3][4]=true如何在Go中创建此map?或者存在任何方式?补充:分层重要提前致谢! 最佳答案 maptype:Amapisanunorderedgroupofelementsofonetype,calledtheelementtype,indexedbyasetofuniqueke

go - 将现有的 C 代码集成到 Go。将 unsigned char 指针结果转换为 []byte

这是一个简单的例子:packagemain//#include//#include//#include/*typedefstruct{unsignedchar*data;unsignedintdata_len;}Result;Result*foo(){Result*r=malloc(sizeof(Result));r->data=(unsignedchar*)malloc(10);r->data_len=10;memset(r->data,0,10);r->data=(unsignedchar*)strdup("xxx123");r->data_len=6;returnr;}*/imp

go - cgo **char slice 字符串

我已经使用cgo开发了一个pam模块。无法转换为[]stringa**charfuncpam_sm_authenticate(pamh*C.pam_handle_t,flagsC.int,argcC.int,argv**C.char)int{fmt.Println(C.GoString(*argv[0]))返回0}错误是无效操作:argv[0](类型**C.char不支持索引)如果你知道请告诉我。 最佳答案 从cgowiki拼凑而成:https://github.com/golang/go/wiki/cgo#Turning_C_ar

go - 从 go 更改 *C.char 的正确方法

我是go和cgo的新手,在浏览互联网一段时间后,我还没有想出一个好的和快速的方法来从go中更改char*。从go&改变*C.char最快的方法是什么这是我的代码和我尝试更改字符串的尝试(它不起作用)packageasciiEngine//#includeimport"C"typeScreenstruct{Width,HeightintLengthC.ulongData*C.charGoDatastringHConsoleC.HANDLEBytesWrittenC.DWORDStartC.COORD}func(sScreen)Draw(){C.WriteConsoleOutputChar

ssl - tls : oversized record received with length XXXXX

我像这样使用内置的标准SSL套接字客户端库(net+crypto/tls):conn,err:=net.Dial("tcp","exploit.im:5222")//...config:=tls.Config{InsecureSkipVerify:true}tls_conn:=tls.Client(conn,&config)fmt.Println(tls_conn.Handshake())我收到消息:conn,err:=net.Dial("tcp","exploit.im:5222")我设法发现它与默认最大数据包大小(在common.go:31中设置的16384+2048)有某种关系。

go - Cgo:找不到使用带有 const char* 参数的回调的方法

我正在使用Go中的C库,使用Cgo并且除了回调之外一切都很好。库有回调setter,它接受指向回调函数的指针。回调函数本身用go编写并使用Cgo语法导出。问题:我可以使用char*参数创建和导出函数,但不能使用constchar*。代码说明:test.go:packagemain/*typedefvoid(*cb_func)(constchar*,int);voidcallback(cb_func);voidmyFunc(constchar*,int);*/import"C"import("fmt""unsafe")//exportmyFuncfuncmyFunc(buf*C.char

go - 如何避免发送 Content-Length header

对于流式http端点,有没有办法避免发送长度?w.Header().Set("Content-Type","image/jpeg")w.Header().Set("Transfer-Encoding","chunked")w.Header().Del("Content-Length")这就是我得到的。HTTP/1.1200OKContent-Length:0Content-Type:image/jpegDate:Mon,23Jun201410:00:59GMTTransfer-Encoding:chunkedTransfer-Encoding:chunked服务器也会打印一条警告。20

go - 如何将 [1024]C.char 转换为 [1024]byte

如何转换此C(数组)类型:charmy_buf[BUF_SIZE];为此Go(数组)类型:typebuffer[C.BUF_SIZE]byte?尝试进行接口(interface)转换时出现此错误:cannotconvert(*_Cvar_my_buf)(type[1024]C.char)totype[1024]byte 最佳答案 最简单和最安全的方法是将其复制到一个slice中,而不是专门复制到[1024]bytemySlice:=C.GoBytes(unsafe.Pointer(&C.my_buff),C.BUFF_SIZE)要在