草庐IT

bytes_write

全部标签

string - 定义一个没有 hex.DecodeString 的 []byte

我正在使用HID驱动程序,该驱动程序读取几个不同报告之一的[]byte缓冲区。当我使用hex.EncodeToString(buffer)时,它将返回一个看起来像0000或0100或0200的字符串>等。我想使用开关检查来自HID设备的输入,因此我想在main()之外预定义这些可能性,我应该如何进行?我试过这些可能性:varLEFT[]byte=[]byte('0000')//orvarLEFT[]byte=`0000`//orvarLEFT[]byte='0000'//orvarLEFT[]byte='\x00\x00'//fromthe%qPrintfverb另一种方法是在main

io - 有没有办法将 []byte slice 转换为 io.Reader?

这个问题在这里已经有了答案:Convertbyteslicetoio.Reader(1个回答)关闭1年前。我刚开始使用go,想知道是否可以将[]byteslice转换为io.Reader。如ioutil.ReadAll中所示,其他方式是可能的。如果不能,是否可以将code.google.com/p/go.net/html.Tokenizer以某种方式与字节slice一起使用?

string - Go语言是否对字符串使用Copy-on-write

这个问题在这里已经有了答案:DoesGolangCopytheStringonModification/Write?(2个答案)关闭7个月前。Go语言是否像Java一样对字符串使用Copy-on-write?IE。如果我按值将一个字符串传递给一个方法并且从不更改它,这将分配内存并复制该字符串(这将是时间效率低下的)或者它只会引用一个副本。

c - 当C库使用不透明结构指针时,如何解决cgo中的 "bad pointer in write barrier"panic

我目前正在围绕C库编写Go包装器。该C库使用不透明的结构指针来隐藏界面中的信息。但是,底层实现将size_t值存储在那里。这会导致生成的程序出现运行时错误。重现问题的最小工作示例如下所示:main.go:packagemain/*#include"stddef.h"//Createanopaquetypetohidethedetailsoftheunderlyingdatastructure.typedefstructHandlePrivate*Handle;//Inreality,theimplementationusesatypederivedfromsize_tfortheHan

tcp - 有人能告诉我 golang 中 io.ReadFull 和 bytes.Buffer.ReadFrom 的行为是什么吗

我在实现一个tcpc/sdemo的时候遇到了一个问题,我发现当我在服务端使用io.ReadFull(conn,aByteArr)或者bytes.Buffer.ReadFrom(conn)的时候很奇怪,好像是直到客户端退出,服务器才会读取连接中的数据,换句话说,服务器卡住了,但是我可以使用基本的conn.Read(aBuffer)来读取数据。为什么这两种方法如此奇怪?因为我想让我的服务器处理任意大小的数据,所以我不喜欢使用基本的方式,我的意思是conn.Read(),它必须首先制作一个指定大小的字节slice。请帮助我。我可以给出我的代码:客户:packagemainimport("ne

go - 如何检查 []byte 是否全为零

有没有办法在不检查每个元素或使用反射的情况下检查byteslice是否为空或0?theByteVar:=make([]byte,128)if"theByteVarisemptyorzeroes"{doSomething()}我发现一个看起来很奇怪的解决方案是保留一个空字节数组以供比较。theByteVar:=make([]byte,128)emptyByteVar:=make([]byte,128)//fillwithanythingtheByteVar[1]=2ifreflect.DeepEqual(theByteVar,empty)==false{doSomething(theBy

http - HTTP ResponseWriter 的 write 函数会在 Go 中缓冲吗?

假设我们有一个处理HTTP请求的函数,类似于:funchandler(whttp.ResponseWriter,r*http.Request){w.Write([]byte("firstpieceofdata"))//dosomethingw.Write([]byte("secondpieceofdata"))}我想知道对w.Write()的第一次调用是否刷新到客户端?如果它被刷新,那么我们实际上响应了客户端两次,这很奇怪,因为我们如何在第二次调用write之前确定Content-Length?如果不刷新(比如数据在本地缓冲),那么如果我们在第一次调用时写入大量数据怎么办?(那个堆栈会

reflection - 反射(reflect) []byte 的值

如何获取此接口(interface)的[]byte值?packagemainimport("reflect")funcbyteInterface()interface{}{return[]byte("foo")}funcmain(){//varb[]bytei:=byteInterface()switch{casereflect.TypeOf(i).Kind()==reflect.Slice&&(reflect.TypeOf(i)==reflect.TypeOf([]byte(nil))):default:panic("shouldhavebytes")}}

arrays - 如何在 crypto.rand.Read 中使用 [20]bytes 类型作为参数而不是 []bytes?

我想将随机值读入字节数组。它是这样工作的:hash=make([]byte,20)_,err:=rand.Read(hash)但是我想做类似的事情varhash[20]byte_,err:=rand.Read(hash)结果是cannotusehash(type[20]byte)astype[]byteinargumentto"crypto/rand".Read如何将[20]byte与rand.Read一起使用? 最佳答案 要创建一个由数组支持的slice,您可以编写例如hash[i:j](返回从索引i到索引j-1的slice)。在

arrays - 戈朗 : unsafe dynamic byte array

我正在尝试使用Go与Windowsdll进行交互。我要使用的dll函数接受一个指向字节数组的指针。因此我需要给它那个字节数组。我正在使用syscall调用dll的库,如图所示here.我的基本要求是:我得到了字节数组所需的大小我创建字节数组我必须得到一个指向字节数组的指针然后我将指针传递给Windowsdll我不知道如何在go中创建字节数组,并获取指向它的指针。这显然是一个不安全的操作,unsafe库可能会有帮助,但我需要首先创建一个动态长度字节数组。使用“make”创建slice对我没有帮助,除非我可以获得指向slice支持数组的指针。有没有其他人遇到过这个或有任何想法?