将无符号字符读入字符串

Posted

技术标签:

【中文标题】将无符号字符读入字符串【英文标题】:Read unsigned chars into string 【发布时间】:2012-10-16 07:03:44 【问题描述】:

我有一个无符号字符数组:

unsigned char buffer[BUFFER_SIZE];

我想将该数组中的前 N ​​个无符号字符读入一个字符串,但是在查看 strncpy() 之后,这似乎只需要指向有符号字符的指针。

我应该看memcpy()吗?

【问题讨论】:

缓冲区的格式是什么?都是满的还是半空的?所有值都具有相同的大小? 你尝试过什么 @PaperBirdMaster- 差评人。对我来说没有意义。这个问题很简单,不言自明。 【参考方案1】:

不确定确切的语法,但如果可能,您应该使用:

reinterpret_cast<char *>(buffer[i]);

另见:

Is there a good way to convert from unsigned char* to char*?

【讨论】:

【参考方案2】:

strcmpmemcmp 比较数据,他们不会复制它...

无论如何,只需转换为 char * 并使用任何有意义的 stdlib 函数。

【讨论】:

【参考方案3】:

如果字符串是指char数组,c++中最简单的方法就是使用std::copy,不需要转换任何东西:

unsigned char buffer[BUFFER_SIZE];
char dest[BUFFER_SIZE]

std::copy( buffer, buffer + N, dest );

如果您的意思是 std::string,只需使用迭代器样式构造函数:

std::string dest( buffer, buffer + N );

【讨论】:

以上是关于将无符号字符读入字符串的主要内容,如果未能解决你的问题,请参考以下文章

创建 Java 实用函数以将无符号字符数组转换为字符串

将无符号字符附加到向量会更改其值

将无符号字符数组返回到主函数

如何将无符号字符数组存储为浮点值?

如何将无符号字符数组解析为数值数据

套接字:将无符号字符数组从 C 传递到 JAVA