草庐IT

d-char-sequence

全部标签

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

javascript - 浏览器收到 Websocket 输出,提示 "Invalid UTF-8 sequence in header value "

当我在浏览器中加载页面时,页面得到了正确的服务。当javascript执行时,Chrome的控制台输出显示:InvalidUTF-8sequenceinheadervalue我已经搜索了那个字符串,但找不到关于golang的任何提及。如何告诉golang不要将unicode字符写入网络套接字?我认为这是问题的原因,因为“网络”选项卡只显示一个空的请求和响应。中国CSSE:main.go:packagemainimport("fmt""net/http""log""code.google.com/p/go.net/websocket"//"github.com/garyburd/go-w

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

gorilla websocket 错误 : close 1007 Illegal UTF-8 Sequence

我正在尝试为GlassFish实现一个websocket代理服务器。如果我尝试连接多个客户端,则会出现错误:ReadMessageFailed:websocket:close1007IllegalUTF-8Sequence.我确信GlassFish服务器发送了正确的数据,因为同一个服务器可以与另一个使用node.js实现的代理服务器正常工作。funcGlassFishHandler(conn*websocket.Conn){deferconn.Close()conn.SetReadDeadline(time.Now().Add(1000*time.Second))conn.SetWri

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 - 如何将 [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)要在

go - 如何通过 golang 中的 CGO 将 Go 字符串复制到 C char *?

我想通过CGO将一个Go字符串复制到一个char*中。我可以这样做吗?funccopy_string(cstr*C.char){str:="foo"C.GoString(cstr)=str} 最佳答案 根据cgodocumentation您需要使用C.CString函数将Go字符串转换为C字符串:cstr=C.CString(str)请注意,C.CString函数会为您分配内存,但不会释放它,因此您有责任通过以下调用释放内存:C.free(unsafe.Pointer(cstr)) 关于

go - 将 Go []byte 转换为 C *char

我有一个byte.Buffer,我使用binary.Write()函数将数据打包。然后我需要将这个字节数组发送到C函数。使用Go1.6我没有成功地解决这个问题。buf:=new(bytes.Buffer)//createmybuffer....binary.Write(buf,binary.LittleEndian,data)//writemydatatobufferhereaddr:=(*C.uchar)(unsafe.Pointer(&buf.Bytes()[0]))//convertbuffersbytearraytoaCarrayrc:=C.the_function(addr,

c - atoi 从定义的索引将字符串转换为 char

假设我有charx[3]="123";并且我只想转换char数组的索引1和索引2"23",我可以通过atoi来完成吗?我知道我可以通过charz[2];z[0]=x[1];z[1]=x[2];atoi(z);但这不是我要的。 最佳答案 你可以这样做charx[4];inti;strcpy(x,"123");i=atoi(x+1);因为x是指向char的指针,所以x+1是指向下一个char的指针。如果您尝试使用打印printf("%s",x+1);您将得到23作为输出。请注意,尽管您需要将char数组的长度声明为比其中的字符数多1-以