unsigned char 大小不为1,_bool如何实现大小为1
时间: 2023-06-20 20:03:45 浏览: 106
在C++中,_Bool类型的大小是实现定义的,因此无法保证其大小为1。如果您需要确保一个类型的大小为1,可以使用stdint.h中的uint8_t类型。例如,您可以使用uint8_t来表示布尔值,如下所示:
```
#include <stdint.h>
typedef uint8_t my_bool;
int main() {
my_bool b = 1;
return 0;
}
```
这样就可以确保my_bool类型的大小为1字节。
相关问题
bool verifyText(std::string text, RSA_key pub, unsigned char sign[SIGN_LEN]) { size_t signLen = SIGN_LEN; unsigned char hash[SHA256_DIGEST_LENGTH]; if (!SHA256 ((const unsigned char *)text.c_str(), text.size(), hash)) { std::cout << KCYN << "SHA1 failed" << KNRM << std::endl; exit(0); } bool b = RSA_verify(NID_sha256, hash, SHA256_DIGEST_LENGTH, sign, signLen, pub); return b; }
这段代码定义了一个名为`verifyText`的函数,用于验证文本的签名是否有效。函数接受三个参数:一个字符串`text`,一个`RSA_key`结构体`pub`和一个`unsigned char`数组`sign`。
函数内部首先声明了两个变量:`signLen`用于存储签名的长度,`hash`用于存储对文本进行SHA256哈希后的结果。
接下来,函数使用SHA256函数对`text`进行哈希,并将结果存储在`hash`数组中。如果SHA256函数调用失败,将打印错误信息并退出程序。
然后,函数调用`RSA_verify`函数来验证签名。该函数返回一个布尔值,表示验证结果。如果验证成功,则返回`true`,否则返回`false`。
最后,函数返回验证结果。
unsigned char bit3 = static_cast<unsigned char> (((xInFeatRef > 0) || ((xInFeatRef == 0.0) && (yInFeatRef > 0))) ? !bit4 : bit4);
这是一行 C++ 代码,将一个 bool 类型的变量 bit4 转换为 unsigned char 类型的变量 bit3。具体实现逻辑如下:
1. 如果 xInFeatRef 大于 0,或者 xInFeatRef 等于 0 且 yInFeatRef 大于 0,则条件表达式的值为 true,否则为 false。
2. 如果条件表达式的值为 true,则 !bit4 的值为 false,将其强制转换为 unsigned char 类型后赋值给 bit3;否则将 bit4 的值赋给 bit3。
简单来说,这行代码的作用是根据条件表达式的值来决定 bit3 的值,如果条件表达式为 true,则将 false 赋给 bit3,否则将 bit4 的值赋给 bit3。
阅读全文