草庐IT

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

c - 从 Go 访问类型为 const char * 的 C 数组

我有一个C文件,其数组类型为constchar*,我们将其命名为myStringArray[],类似于:constchar*myStringArray[]={"NAME_OF_FIRST_THING","NAME_OF_SECOND_THING","NAME_OF_THIRD_THING"}我需要使用cgo为该C数组建立索引,并将数组条目转换为Go字符串。以下代码编译但不能正常工作;你可以从下面的输出中看到,它是沿着字符串而不是向上索引数组:myGoString:=C.GoString((*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(C.

c - 从 Go 访问类型为 const char * 的 C 数组

我有一个C文件,其数组类型为constchar*,我们将其命名为myStringArray[],类似于:constchar*myStringArray[]={"NAME_OF_FIRST_THING","NAME_OF_SECOND_THING","NAME_OF_THIRD_THING"}我需要使用cgo为该C数组建立索引,并将数组条目转换为Go字符串。以下代码编译但不能正常工作;你可以从下面的输出中看到,它是沿着字符串而不是向上索引数组:myGoString:=C.GoString((*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(C.

c# - 使用生成的 Golang DLL 返回字符串或 *C.Char

我一直在努力关注z505/goDLLrepo并遇到了一个大问题。该方法无法返回字符串,因为我无法读取结果的输出变量。这是我目前使用的代码(Go)(完整代码https://play.golang.org/p/Yfg85DCeMLh)//exportPrintHello2funcPrintHello2(Input*C.char,Output**C.char)int32{fmt.Println(C.GoString(Input))*Output=C.CString(fmt.Sprintf("FromDLL:Hello,%s!\n",C.GoString(Input)))fmt.Println

c# - 使用生成的 Golang DLL 返回字符串或 *C.Char

我一直在努力关注z505/goDLLrepo并遇到了一个大问题。该方法无法返回字符串,因为我无法读取结果的输出变量。这是我目前使用的代码(Go)(完整代码https://play.golang.org/p/Yfg85DCeMLh)//exportPrintHello2funcPrintHello2(Input*C.char,Output**C.char)int32{fmt.Println(C.GoString(Input))*Output=C.CString(fmt.Sprintf("FromDLL:Hello,%s!\n",C.GoString(Input)))fmt.Println

java - 共享 GAE 数据存储,Go <-> Java,regexp.FindStringIndex 索引转换(字节索引与 utf-8-char-index)

简短版:这打印出3,这是有道理的,因为在Go中,字符串基本上是一个byteslice,并且需要三个字节来表示这个字符。我怎样才能让len和regexp函数根据字符而不是字节来工作。packagemainimport"fmt"funcmain(){fmt.Println(len("ウ"))//returns3fmt.Println(utf8.RuneCountInString("ウ"))//returns1}背景:我正在使用JDO(Java)将文本保存到GAE数据存储中。然后我使用Go处理文本,特别是我使用regexp.FindStringIndex并将索引保​​存到数据存储。然后回到J

java - 共享 GAE 数据存储,Go <-> Java,regexp.FindStringIndex 索引转换(字节索引与 utf-8-char-index)

简短版:这打印出3,这是有道理的,因为在Go中,字符串基本上是一个byteslice,并且需要三个字节来表示这个字符。我怎样才能让len和regexp函数根据字符而不是字节来工作。packagemainimport"fmt"funcmain(){fmt.Println(len("ウ"))//returns3fmt.Println(utf8.RuneCountInString("ウ"))//returns1}背景:我正在使用JDO(Java)将文本保存到GAE数据存储中。然后我使用Go处理文本,特别是我使用regexp.FindStringIndex并将索引保​​存到数据存储。然后回到J

c - 转到 []string 到 C char**

我开始尝试将一些C库集成到我使用cgo的项目的Go代码中,但遇到了一个问题。在其中一个C函数中,我需要将argv传递给函数调用。在C中,argv是一个指向char字符串数组的指针(K&RC,§5.10),我需要将一段字符串转换为char**。我仔细查看了有关如何从Go到C的变量类型转换的任何信息,但似乎几乎没有文档。任何帮助将不胜感激。 最佳答案 您需要自己创建数组。应该这样做:argv:=make([]*C.char,len(args))fori,s:=rangeargs{cs:=C.CString(s)deferC.free(u

c - 转到 []string 到 C char**

我开始尝试将一些C库集成到我使用cgo的项目的Go代码中,但遇到了一个问题。在其中一个C函数中,我需要将argv传递给函数调用。在C中,argv是一个指向char字符串数组的指针(K&RC,§5.10),我需要将一段字符串转换为char**。我仔细查看了有关如何从Go到C的变量类型转换的任何信息,但似乎几乎没有文档。任何帮助将不胜感激。 最佳答案 您需要自己创建数组。应该这样做:argv:=make([]*C.char,len(args))fori,s:=rangeargs{cs:=C.CString(s)deferC.free(u