gpt4 book ai didi

c - 如何在c语言中从uint8_t *bytes的偏移量x中提取N个字节?

转载 作者:行者123 更新时间:2023-11-30 20:35:40 25 4
gpt4 key购买 nike

如何从 tvb 的偏移量 offset 中提取长度为 length length 的字节? tvb 类型是:

uint8_t *tvb;

uint8_t *extractBytes(uint8_t *tvb, guint8 offset, guint8 length)
{
// do ...
// extract bytes and return
}

我不知道该怎么做?

提前致谢。

最佳答案

您需要为提取的字节分配内存。然后复制正确的字节就很简单了:

uint8_t *extractBytes(uint8_t *tvb, guint8 offset, guint8 length)
{
uint8_t *new = malloc (length);
if (new) {
mempcy (new, tvb+offset, length);
}
return new; /* Returns NULL on allocation failure */
}

使用完分配的内存后,不要忘记free()释放它。

请注意,上面的 malloc() 调用分配 length字节。如果要为大于 uint8_t 的元素分配内存,则必须将内存量乘以元素的大小。为了安全起见,并防止将来发生变化,您可以按如下方式分配内存:

new = malloc (length * sizeof *new);

现在,sizeof *new 将始终是正确的元素大小。

<小时/>

如果您不需要更改提取的字节,并且在使用字节时原始缓冲区 (tvb) 不会更改,则可以使用以下方式直接访问它们:

int i;
for (i = 0; i < length; i++) {
do_something (tvb[offset+i]);
}

关于c - 如何在c语言中从uint8_t *bytes的偏移量x中提取N个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com