在无符号字符和签名字符之间转换

Cast between unsigned and signed char. How to?

本文关键字:字符 之间 转换 无符号      更新时间:2023-10-16

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

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

如果需要更多细节,我很乐意遵守。不用说,我已经搜索过,但除了铸造 int 和无符号的 int 之外,找不到其他任何令人满意的答案,因此,如果这是一个转发,我会毫不犹豫地指出正确的方向。

char yourChar = 'a';
unsigned char yourUChar = static_cast<unsigned char>(yourChar);
int yourInt = 1;
unsigned int yourUInt = static_cast<unsigned int>(yourInt);
一个向量

只是多个整数,你会在向量中强制转换每个成员。矩阵也是如此。

如果将具有负值的有符号值强制转换为无符号类型,则可能会产生不希望的行为。例如,将 -1 强制转换为无符号 int 会为您提供按位值 -1 强制转换为无符号 int。一个 -1 的 32 位有符号 int 在十六进制中0xFFFFFFFF,所有 1 都是二进制的,将其转换为无符号会使位为 1,但不是你拥有最大的 32 位无符号 int,即 4,294,967,295。