繁体   English   中英

如何在 C/C++ 中将 unsigned char* 转换为 unsigned char 数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM