C++ unsigned char*数组转ascii字符串
时间: 2023-07-09 18:27:49 浏览: 141
可以使用以下代码将一个 `unsigned char` 类型的数组转换为 ASCII 字符串:
```cpp
unsigned char arr[] = { 72, 101, 108, 108, 111, 33 }; // Hello!
int len = sizeof(arr) / sizeof(unsigned char);
char str[len+1];
for (int i = 0; i < len; i++) {
str[i] = static_cast<char>(arr[i]);
}
str[len] = '\0';
std::cout << str << std::endl; // Output: Hello!
```
在上面的代码中,我们首先定义了一个 `unsigned char` 类型的数组 `arr`,其中包含 ASCII 字符串 "Hello!" 的每个字符的 ASCII 编码。然后,我们计算数组的长度并使用 `char` 类型的数组 `str` 来存储 ASCII 字符串。接下来,我们使用循环遍历 `arr` 数组中的每个元素,并将其转换为 `char` 类型并存储到 `str` 数组中。最后,我们在 `str` 数组的末尾添加一个空字符 '\0',以确保它是一个有效的 C 风格字符串,并在控制台上输出它。
相关问题
C++ unsigned char*数组转ascii 16进制表示的QString字符串
可以使用以下代码将一个 `unsigned char` 类型的数组转换为 ASCII 16进制表示的 `QString` 字符串:
```cpp
unsigned char arr[] = { 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x21 }; // Hello!
int len = sizeof(arr) / sizeof(unsigned char);
QString str;
for (int i = 0; i < len; i++) {
str += QString("%1").arg(arr[i], 2, 16, QLatin1Char('0')).toUpper();
}
std::cout << str.toStdString() << std::endl; // Output: 48656C6C6F21
```
在上面的代码中,我们首先定义了一个 `unsigned char` 类型的数组 `arr`,其中包含 ASCII 字符串 "Hello!" 的每个字符的 ASCII 编码的 16进制表示。然后,我们计算数组的长度并使用 `QString` 类型的 `str` 来存储 ASCII 字符串的 16进制表示。接下来,我们使用循环遍历 `arr` 数组中的每个元素,并使用 `QString::arg()` 函数将其转换为 16进制表示的字符串,并将其添加到 `str` 字符串中。最后,我们将 `str` 字符串转换为标准的 `std::string` 类型,并在控制台上输出它。
需要注意的是,在使用 `QString::arg()` 函数时,我们将第二个参数设置为 2,表示结果使用 2 个字符的 16进制表示来表示每个字节;将第三个参数设置为 16,表示使用 16 进制表示法;将第四个参数设置为 QLatin1Char('0'),表示在不足两个字符的情况下用 0 补齐。
c++ 将一个unsigned char的数组转换为字符串
可以使用 C++ 标准库中的 string 类的构造函数,例如:
```c++
#include <iostream>
#include <string>
int main()
{
unsigned char arr[] = { 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100 };
std::string str(reinterpret_cast<char*>(arr), sizeof(arr));
std::cout << str << std::endl;
return 0;
}
```
输出结果为:
```
Hello World
```
这种方法会将数组中的每个 unsigned char 转换为对应的 ASCII 码字符,然后拼接成一个字符串。需要注意的是,这里使用了 reinterpret_cast 将 unsigned char 类型的指针转换为 char 类型的指针,以便使用 string 类的构造函数。
阅读全文
相关推荐














