草庐IT

byte-shifting

全部标签

database - 在 Go 中,如何将 bson byte[] 数据解码为结构数组?

当结构数组传递到接口(interface){}时,Unmarshalbsonbyte[]数据到结构数组的最佳方法是什么参数?出于演示目的,在下面的代码中,我在inStructArr上使用bson.Marshal()来获取byte[]类型数据的。这样我就可以使用bson.Unmarshal(...)通过管道传输到outStructArr。import"gopkg.in/mgo.v2/bson"typeUserstruct{Namestring}funcDecodeArrData(inStructArr,outStructArrinterface{}){inStructArrData,_:

go - 如何在 Go 中初始化大小为 N 的空 bytes.Buffer?

使用bytes.NewBuffer()在Go中创建大小为n的空缓冲区的最简单方法是什么?? 最佳答案 在这里添加一些额外的信息。文档字符串末尾简要提到了创建新缓冲区的快速方法:b:=new(bytes.Buffer)或b:=&bytes.Buffer{}Buffer结构定义包含一个64字节的内部bootstrap字段,最初用于小分配。一旦超过默认大小,就会创建一个字节sliceBuffer.buf并在内部维护。正如@leafbebop所建议的,我们可以使用新slice预初始化Buffer结构的buf字段。b:=bytes.NewBu

go - 如何将 []byte 转换为 [8]uint8

我需要填充一个具有[8]uint8类型成员的结构体.这需要填充类型为[]byte的字节数组。初始化为长度8。简单的方法不起作用:Data:[8]uint8(RequestFrame(0x180,r)),给cannotconvert..(type[]byte)totype[8]uint8由于两个数组在结构上是相同的,如果这可以通过强制转换/赋值而不是复制来完成会更好吗? 最佳答案 背景您的“简单方法”的问题在于slice(任何类型)是struct-typed由一个指针组成和两个整数;指针包含地址底层(支持)数据数组,整数包含什么len

http - Golang *bytes.Buffer nil 导致 fatal error

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭3年前。Improvethisquestion我遇到了与https://github.com/golang/go/issues/26666相同的问题因为我的http请求有一个包装函数。有时我需要请求:body:=new(bytes.Buffer)json.NewEncoder(body).Encode(h)req("POST","http://example.com",body)有时它很简单:req("GET","http://example

go - 在 Go 中,如何将 []myByte 转换为 []byte?

我有一个typemyBytebyte,因为我想在逻辑上区分不同类型的字节。我可以使用byte(myByte(1))轻松转换,但我找不到转换或转换slice的方法:[]byte([]myByte{1})失败。这样的事情可能吗?这些位在内存中是相同的(对吗?)所以应该有一些方法,而不是逐字节复制到新对象中..例如,这些都不起作用:http://play.golang.org/p/WPhD3KufR8packagemaintypemyBytebytefuncmain(){a:=[]myByte{1}fmt.Print(byte(myByte(1)))//WorksOKfmt.Print([]

戈朗 : Getting string from []byte

我是新手(来自C++世界)我创建了一个新的编写器,它“继承”自io.writer:typehttpWriterstruct{io.Writer}接下来我实现了io.Writer接口(interface)的Write()函数:func(w*httpWriter)Write(p[]byte)(nint,err,error){...}然后,我将所有输出重定向到该作者。我无法在Write()实现中打印实际字符串。我已经尝试了所有可以在文档中找到的字符串格式,但没有一个给我原始字符串作为输出。fmt.Printf("%s\n",p)\\etc..希望得到帮助 最佳答案

pointers - 将指针转换为 byte slice

x/sys/unix中的Mmap()系统调用package在Golang中返回一个[]byte类型,而底层系统调用实际上返回一个指针。它是如何做到这一点的?更具体地说,在this中由Golang开发人员打包,VirtualAlloc函数只是返回一个指针。如何将其转换为字节slice,就像在Unix包中一样? 最佳答案 使用unsafe包你可以做一些类似于Mmap中所做的事情方法的unix实现:typesliceHeaderstruct{addrunsafe.Pointerlenintcapint}varb[]bytehdr:=(*s

arrays - 如何删除 []byte 类型的字节

我有一个变量cmd返回[5048...505310]可以删除这个变量的任何字节吗?在我的例子中,我想删除最后一个字节[10]==LF(换行)以获得:[5048...5053]P.S.:我没有发现任何类似的问题,因为函数bytes.Trim(cmd,"\x10")对我不起作用,或者我没有很好地使用它。.. 最佳答案 例如,packagemainimport("bytes""fmt")funcmain(){b:=[]byte{50,48,50,53,10}fmt.Println(b)b=bytes.TrimSuffix(b,[]byte

go - 为什么从 byte.Buffer 读取时我会得到一个永无止境的循环

目前我正在编写一个从bytes.Buffer读取缓冲区的程序。它应该在找到字符e时停止阅读。但是当我使用for循环读取缓冲区时,我注意到了一些奇怪的事情。当我将字节读取作为for语句的一部分时,我得到一个无限循环(exampleingoplayground):b:=bytes.NewBuffer([]byte("uoiea"))forv,_:=b.ReadByte();v!='e';{println("Thevalueis"+string(v))}但是如果我删除它并将它放在for循环中,它不会(exampleingoplayground):b:=bytes.NewBuffer([]by

将int转换为byte

varxuint64=257varyint=257fmt.Println("rv1is",byte(x))//okfmt.Println("rv2is",byte(y))//okfmt.Println("rv3is",byte(257))//constant257overflowsbytefmt.Println("rv4is",byte(int(257)))//constant257overflowsbyte这很奇怪。都是int转byte,应该都是error。但是情况1,2没问题!怎么可能呢? 最佳答案 可变数值可以转换为更小的类型