std::cout 打印unsigned char
时间: 2023-07-17 20:04:05 浏览: 75
您可以使用 `std::cout` 来打印 `unsigned char` 类型的变量。`std::cout` 是 C++ 标准库中的输出流对象,可以将数据输出到控制台。
要打印 `unsigned char` 类型的变量,您可以使用类型转换将其转换为 `int` 类型,然后将其传递给 `std::cout`。以下是一个示例代码:
```cpp
unsigned char myChar = 'A';
std::cout << static_cast<int>(myChar) << std::endl;
```
在上面的代码中,`myChar` 是一个 `unsigned char` 类型的变量,存储了字符 'A' 的 ASCII 值。通过使用 `static_cast<int>` 将其转换为 `int` 类型,然后将其传递给 `std::cout`,可以将其打印到控制台上。
请注意,通过将 `unsigned char` 类型转换为 `int` 类型,您将能够打印出其对应的整数值。
相关问题
std::shared_ptr<unsigned char[]> 构造时赋值一个字符串, 不做任何拷贝
如果你想要构造一个 `std::shared_ptr` 对象,同时又希望该对象能够管理一个字符串的内存,可以考虑使用 `std::shared_ptr<unsigned char[]>`,并在构造时传入一个指向字符串的指针。代码示例如下:
```c++
#include <iostream>
#include <memory>
#include <cstring>
int main() {
const char* str = "hello world";
std::shared_ptr<unsigned char[]> ptr(reinterpret_cast<unsigned char*>(const_cast<char*>(str)), [](unsigned char* p) { delete[] p; });
std::cout << ptr.get() << std::endl;
return 0;
}
```
在这个示例中,我们将一个字符串常量 `const char* str` 的指针转换为 `unsigned char*` 类型,并将其传递给了 `std::shared_ptr<unsigned char[]>` 的构造函数。需要注意的是,我们必须使用一个 lambda 表达式作为析构器,以便正确地释放内存。这里我们使用了 `delete[]` 操作符,因为 `std::shared_ptr` 管理的是一个数组。
由于 `std::shared_ptr` 的默认删除器是 `delete`,所以如果你不提供一个自定义的删除器,它会尝试使用 `delete` 操作符来释放内存,这将导致编译错误,因为 `const char*` 类型的指针不能直接传递给 `delete` 操作符。
bool Auth::verify(std::string secret, std::string text) { unsigned char h[SHA256_DIGEST_LENGTH]; std::string t = std::to_string(this->id) + secret + text; if(!SHA256 ((const unsigned char *)t.c_str(), t.size(), h)) { std::cout << KCYN << "SHA1 failed" << KNRM << std::endl; exit(0); } return (this->hash == h); }
这段代码定义了一个名为`verify`的成员函数,用于验证`Auth`对象的哈希值是否与传入的秘钥和文本的哈希值相等。函数接受两个参数:一个字符串`secret`和一个字符串`text`。
函数内部首先声明了一个`unsigned char`数组`h`,用于存储对拼接后的字符串进行SHA256哈希后的结果。
然后,函数将对象的`id`、`secret`和`text`按照一定顺序拼接成一个新的字符串`t`。
接下来,函数使用SHA256函数对字符串`t`进行哈希,并将结果存储在数组`h`中。如果SHA256函数调用失败,将打印错误信息并退出程序。
最后,函数返回比较对象的哈希值和数组`h`是否相等的结果。如果相等,则返回`true`,否则返回`false`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)