草庐IT

go - 将 uint16 数组转换为字符串

我有一个来自WinAPIPROCESSENTRY32.szExeFile的uint16数组,我想将其转换为字符串。这是我的变量类型varhello[260]uint16现在我需要将hello转换为字符串。我该怎么做?编辑这是我尝试过的:funcszExeFileToString(ByteString[260]uint16)string{b:=make([]byte,len(ByteString))fori,v:=rangeByteString{b[i]=byte(v)}returnstring(b)}但是,这会返回非常奇怪的字符串...result(该函数应将PROCESSENTRY3

go - 如何在 Go 中返回一个 slice 并从 C 中调用?

我正在尝试使用cgo在C代码中使用Go包。以下是我的一段代码:funcLinearTransformToUInt8(frame[]int64,winWidthint,winCenterint)[]uint8{vartransformed[]uint8//mycoolcodereturntransformed}但是,当从C调用时,它说panic:runtimeerror:cgoresulthasGopointer我认为问题是返回的[]uint8是Go类型,应该用C类型替换。但是,我不知道如何实现它。请帮忙! 最佳答案 main.gop

go - golang常量溢出uint64有什么问题

userid:=12345did:=(userid&^(0xFFFF编译这段代码时,我得到:./xxxx.go:511:constant-18446462598732840961overflowsint您知道这是怎么回事以及如何解决吗?谢谢。 最佳答案 ^(0xFFFF是一个无类型常量,在go中是一个任意大的值。0xffff是0xffff000000000000.当你否定它时,你会得到-0xffff000000000001(因为有二进制补码,-x=^x+1,或^x=-(x+1))。当你写userid:=12345,userid获取类

c - 如何将返回的 uint8_u 转换为 ARM 中的 GoString?

我使用cgo从Go调用C函数。该函数的返回类型为uint8_u*。我知道它是一个字符串,需要在Go中打印它。我在myFile.go中有以下内容packagemain//#cgoCFLAGS:-g//#include//#include"cLogic.h"import"C"import("fmt""unsafe")funcmain(){myString:="DUMMY"cMyString:=C.CString(myString)deferC.free(unsafe.Pointer(cMyString))cMyInt:=C.int(10)cResult:=C.MyCFunction(cMy

go - 如何使用 uint32s 提供随机源

我正在尝试在Go中实现32位(MT19937-32、LFSR113和LFSR88等)随机源,但是math.Rand的源接口(interface)接受Int63()作为方法。我们如何将uint32转换为int64(非负int64,或63位)这是一个LFSR88代码(省略了一些方法和常量):typeLFSR88struct{s1,s2,s3,buint32}...func(lfsr*LFSR88)Uint32()uint32{lfsr.b=(((lfsr.s1>19)lfsr.s1=(((lfsr.s1&4294967294)>25)lfsr.s2=(((lfsr.s2&429496728

go - 在 go 中迭代 2D slice

我正在参加“围棋之旅”,并且有一个关于Exercise:Slicesexample的问题.目前,我可以通过使用[]运算符遍历每个索引来创建图片,就像在C中一样。funcPic(dx,dyint)[][]uint8{pic:=make([][]uint8,dy)fori:=rangepic{pic[i]=make([]uint8,dx)forj:=rangepic[i]{pic[i][j]=uint8(1)}}returnpic}但是,当我尝试执行如下所示的操作时,出现了panic:runtimeerror:indexoutofrange错误。我尝试添加print语句并调用Pic(3,3

Golang exercise slice 如何处理大值

我正在阅读Golang教程,我对它对slice练习中的某些值的作用有点困惑。https://tour.golang.org/moretypes/18这是我混淆的代码:值0是完美的蓝色像素,值255是完美的白色像素。那么当显示的值是某种形式的x*y时,这里发生了什么(我做了/20以使图像更大并且更容易看到)。如果你水平地跟随图像,你会看到在这个过程中的某个时刻,不断增加的x和y值似乎恢复为蓝色(0值)如果我输入一个静态值,如256在返回中我得到一个编译错误。所以它显然不允许数字超出范围并恢复为0或任何值。那么图片中的蓝色曲线是怎么得到的呢?此处导入源代码:https://github.c

string - 获取指向字符串中第一个字符的 *uint8 指针

我正在尝试使用unsafe.Pointer将哈希函数从C移植到Go。我需要获取指向key字符串第一个字符的指针。我尝试了&(hello[0])和&hello[0]但失败了。 最佳答案 stringGo中的值是不可变的,因此不是addressable;所以你不能获取它的rune或字节的地址。如果可以,您可以修改指向的值,从而修改string的内容值(value)。在Go中还有nopointerarithmetic.你能做的很简单indexstring,索引string索引其字节(以UTF-8编码形式,这就是Go在内存中存储string

go - Go 中的 uint32 和 bool 类型不匹配

我有一个这样定义的C宏:#definenormalize(c,a)c=(a)+((a)==0xFFFFFFFF)我是用Go重写的,据我所知Go中没有C宏之类的东西。因此,我创建了一个普通函数:funcnormalize(auint32,c*uint32){*c=a+(a==0xFFFFFFFF)}问题是这给了我一个类型不匹配错误。有什么解决办法吗? 最佳答案 因此,如果a不等于0xffffffff,那么您的Cnormalize宏会将c分配给a,否则为0。我不确定这是哪种规范化,但现在这不是我关心的问题。鉴于您提供的Go函数签名,这将

与 Go 之间的 C 指针转换

我正在使用FFmpeg为Windows平台编写一个应用程序,它是golang包装器goav,但我无法理解如何在C和Go之间传递C指针。我已经删除了C代码的所有相关部分,包装器和我的代码,如下所示:C代码-libavutil/frame.h#includetypedefstructAVFrame{#defineAV_NUM_DATA_POINTERS8uint8_t*data[AV_NUM_DATA_POINTERS];}去goav包装器packageavutil/*#cgopkg-config:libavutil#include#include//CcodeIadded:#includ