英文:
Byte slice partial copy
问题
我对Go语言还比较陌生,我正在尝试访问一个字节切片的一部分,并将其复制到另一个固定长度的字节切片,但是找不到正确的解决方案。
我最好的猜测是:
var extracted []byte
var newSlice [512]byte = extracted[0 : 511]
但是这给我一个转换错误:
cannot use extracted[0:511] (value of type []byte) as [512]byte value in variable declarationcompilerIncompatibleAssign
注意:
- 这将在一个循环中进行,以每次迭代处理512个字节的大小;
- extracted实际上具有固定大小为512*n字节,但如果我固定该长度,我会遇到相同的问题。
我以为我可以使用io.Reader,但这种方法也失败了。
欢迎任何帮助
英文:
I'm rather new with go and I'm trying to access a portion of a byte slice and copy to a another fixed length byte slice but doesn't find the proper solution.
My best bet was :
var extracted []byte
var newSlice [512]byte = extracted[0 : 511]
But this gives me a conversion error :
cannot use extracted[0:511] (value of type []byte) as [512]byte value in variable declarationcompilerIncompatibleAssign
Notes :
- this will be in a loop to iterate over the entire size of extracted 512 bytes at a time;
- extracted actually has a fixed size of 512*n bytes, but if I fix that length I have the same issue
I thought I could use a io.Reader but this approach failed miserably as well.
Any help welcome
答案1
得分: 1
以下是翻译好的内容:
这里有几种方法:
-
将切片转换为数组指针 并解引用该指针:
var pixels [512]byte pixels = *(*[512]byte)(extracted[:512])
可以使用 短变量声明 在一条语句中完成:
pixels := *(*[512]byte)(extracted[:512])
-
使用内置的 copy 函数将切片的元素复制到数组中(这一点在问题的评论中已经提到):
var pixels [512]byte copy(pixels[:], extracted[:512])
英文:
Here are a couple of approaches:
-
Convert the slice to an array pointer and dereference that pointer:
var pixels [512]byte pixels = *(*[512]byte)(extracted[:512])
This can be done in one statement using a short variable declaration:
pixels := *(*[512]byte)(extracted[:512])
-
Use the builtin copy function to copy elements from a slice to an array (this point was covered in the question comments):
var pixels [512]byte copy(pixels[:], extracted[:512])
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论