[英]How to convert unsigned char* to an unsigned char array in C/C++?
我的 function 看起来像这样:
void Example(const unsigned char* bytes)
{
unsigned char buffer[2048] = {0};
strcpy(buffer, bytes);
}
这不起作用。 我该如何进行这项工作?
你确实需要转换任何东西。 如果你想从一个复制
void Example(const void *bytes, size_t len)
{
unsigned char buffer[2048];
memcpy(buffer, bytes, len);
/* ...*/
}
示例用法
int foo(void)
{
char str[] = "Hello world";
Example(str, sizeof(str));
}
正如其他人可能已经提到的那样, strcpy
适用于char
类型的 arrays ,而不是unsigned char
,并且源数组必须以零结尾。
如果您不限于 C,还可以使用 c++,则可以使用std::vector
作为缓冲区。 我假设bytes
不指向以零结尾的数组,因此您需要一个额外的长度参数:
void Example(const unsigned char* bytes, size_t n)
{
// Pointers can in c++ be used as iterators
//
std::vector<unsigned char> buffer(bytes, bytes+n);
}
这让您以一种安全的方式,不受最大缓冲区大小的限制。
std::vector
中的数据按顺序存储在 memory 中,因此如果需要指向数据的指针,只需执行const unsigned char *b = &buffer[0];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.