在unsigned和signed char之间进行转换。如何?

时间:2015-06-16 02:06:00

标签: c++ casting

我有一个问题,作为一名学生,我必须使用OpenSSL。我的任务是计算带有盲法的RSA签名,它同时使用charunsigned char。我说这是为了以防万一有人想知道为什么我使用这些类型,charunsigned char,所以错综复杂。

我的问题是,在没有指针的情况下,使用来自和char / unsigned char的强制转换的规则和良好实践建议,向量/指针以及为什么不向矩阵应用

如果需要更多详细信息,我很乐意遵守。不言而喻,我已经搜索过但除了强制转换int和unsigned int之外无法找到令人满意的答案,因此如果这是一个转发点,我会毫不犹豫地指向正确的方向。

1 个答案:

答案 0 :(得分:1)

char yourChar = 'a';
unsigned char yourUChar = static_cast<unsigned char>(yourChar);

int yourInt = 1;
unsigned int yourUInt = static_cast<unsigned int>(yourInt);

向量只是多个整数,您可以在向量中转换每个成员。矩阵也是如此。

如果将具有负值的带符号值转换为无符号类型,则可能会产生意外行为。例如,将-1转换为unsigned int将为您提供-1转换为unsigned int的按位值。一个32位的带符号的int是-1,0xFFFFFFFF是十六进制,所有1都是二进制的,并且将它转换为无符号会将这些位保留为1,但不是你有最大可能的32位无符号int,即4,294,967,295。