在 unsigned 和 signed char 之间转换。如何?
Cast between unsigned and signed char. How to?
我有一个问题,作为一名学生我必须使用 OpenSSL。我的任务是计算带有盲化的 RSA 签名,它同时使用 char
和 unsigned char
。我这么说是为了防止有人想知道为什么我要如此复杂地使用这些类型 char
和 unsigned char
。
我的问题是使用从 char
到 unsigned char
的转换的规则和良好实践建议是什么,没有指针应用于自身,到 vector/pointers,为什么不是,到矩阵。
如果需要更多详细信息,我很乐意满足。不用说,我已经进行了搜索,但除了转换 int 和 unsigned int 之外,找不到令人满意的答案,因此,如果这是一个转贴,请毫不犹豫地指出我正确的方向。
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 将为您提供转换为 unsigned int 的 -1 的按位值。一个为 -1 的 32 位带符号整数是十六进制的 0xFFFFFFFF,二进制中全为 1,将其转换为无符号会使这些位保留为 1,但您没有最大可能的 32 位无符号整数,即 4,294,967,295。
我有一个问题,作为一名学生我必须使用 OpenSSL。我的任务是计算带有盲化的 RSA 签名,它同时使用 char
和 unsigned char
。我这么说是为了防止有人想知道为什么我要如此复杂地使用这些类型 char
和 unsigned char
。
我的问题是使用从 char
到 unsigned char
的转换的规则和良好实践建议是什么,没有指针应用于自身,到 vector/pointers,为什么不是,到矩阵。
如果需要更多详细信息,我很乐意满足。不用说,我已经进行了搜索,但除了转换 int 和 unsigned int 之外,找不到令人满意的答案,因此,如果这是一个转贴,请毫不犹豫地指出我正确的方向。
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 将为您提供转换为 unsigned int 的 -1 的按位值。一个为 -1 的 32 位带符号整数是十六进制的 0xFFFFFFFF,二进制中全为 1,将其转换为无符号会使这些位保留为 1,但您没有最大可能的 32 位无符号整数,即 4,294,967,295。