显示无符号字符*和有符号字符*输出的结果是否完全相同
Should displaying an unsigned char* & an signed char* output exactly the same result
我不确定我是否正确翻译/转换unsigned char*
到常规signed char*
?
unsigned char*
是一个经过哈希处理的字符串。以下代码是否正确地将unsigned char*
转换为signed char*
?
std::string message = "to be encrypted";
unsigned char hashMessage[SHA256_DIGEST_SIZE];
SHA256::getInstance()->digest( message, hashMessage );
// is this conversion correct
char* hashMessageSigned = reinterpret_cast<char*>(hashMessage);
printf("Unsigned Char Hash: %sn", hashMessageSigned); // The 2 printf's print out exactly the same strings is that correct?
printf("Signed Char Hash: %sn", hashMessage);
这里没有转换任何内容。两个printf
都被指示将数据视为可打印字符串。
有符号或无符号是一个解释问题。0xFF可以是255或-1,这取决于您如何解释它。类型的"符号"是帮助编译器解释数据的指令。
但是在这种情况下,您根本不将数据视为数字,而是将其视为字符串,然后解释完全不同:0xFF是ASCII表中第255位的字符。那里没有标志。
只是确保你明白了:reinterpret_cast<char*>
不转换数据,它转换编译器对待指针的方式。%s
指示printf
应该如何处理指针,并且与编译器之前被指示做的事情无关(并且在运行时完成)。
相关文章:
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- 常量字符*是否有任何例外?
- 拆分字符串输入并查找字符是否有效
- CPP 中的 ++ 运算符对字符是否有任何重载?
- 验证字符是否小于字母 c++ 中的指定字母
- 字符串中的重复字符是否可以在 O(n) 中识别和量化
- 错误 ~ 检查字符是否为小写字母
- C++ 使用 || 检查字符是否不在字符串中不工作
- 如何检查2D阵列中的字符是否出现多次?C
- 将短字母转换为字符是否合法
- 比较两个字符*是否相等
- 如何检查字符是否是某个字母表中的字母
- 检查字符是否等于 C++ 中的
- 如何检查字符是否在范围内
- Strchr不起作用,或者我需要一个替代方案来检查给定字符串中的任何字符是否是另一个字符串的一部分
- C++如何确定字符是否是单词中的第一个字符
- 在VC ++浮点数据类型值中,如何检查字符串或特殊字符是否混合
- 如何检查字符串中的字符是否为字符串
- 字符 * 是否有等效的 _mm_loadu_ps