如何在C ++中迭代void *的字节?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C ++中迭代void *的字节?相关的知识,希望对你有一定的参考价值。
循环遍历void *缓冲区的每个字节的最佳方法是什么,并根据特定条件为每个字节分配一个值?
unsigned int bufSize = 100; //could be any value
void* buffer = malloc(bufSize);
char* bufferPointer = static_cast<char*>(buffer);
for (unsigned int i = 0; i < bufSize; i++){
if (i % 2 == 0){
bufferPointer[i] = 0x00;
}
else{
bufferPointer[i] = 0xff;
}
}
buffer = static_cast<void*>(bufferPointer);
为什么这不起作用?我尝试转换为char *来迭代每个字节。
答案
你需要将void*
施放到unsigned char*
。然后,您可以使用指针算法遍历您拥有的内存块,并通过指针取消引用来设置值。
请记住,指针算法仅在数组中有效。为此目的,对象可以被认为是长度为1的数组。此外,并且可能容易混淆,N个int
元素的数组将等同于N * sizeof(int)
unsigned char
元素的数组。
以上是关于如何在C ++中迭代void *的字节?的主要内容,如果未能解决你的问题,请参考以下文章
当我们在iOS应用程序中使用Objective C输入错误的安全代码时如何显示警报
Objective C to Swift代码转换,似乎无法在Swift中正确处理字节