【发布时间】:2012-04-26 11:12:41
【问题描述】:
显然编译器认为它们是不相关的类型,因此需要reinterpret_cast。为什么会有这样的规定?
【问题讨论】:
-
我正在获取字符串的 SHA-1 哈希值。
c_str()返回const char *,SHA-1 函数将const unsigned char *作为参数。 -
如果该字符串包含负字符值,您期望会发生什么?
-
我希望任何负值
c变为c + 256,这是将有符号字节转换为无符号字节的标准。老实说,我只是在进行转换以计算哈希值。我不在乎它们是如何转换的,只要它们每次都以相同的方式转换即可。 -
@Nick:将
char转换为unsigned char是一种转换。将char *转换为unsigned char*,然后读取元素假设,当它们没有被转换时,它们是非常不同的。它将适用于转换实际上不需要更改表示的系统(例如,在二进制补码系统上),但由于这是一个特定于实现的假设,因此需要显式的reinterpret_cast是合适的。
标签: c++ char reinterpret-cast static-cast unsigned-char