可能重复:
什么是 C++ 中的 >>> 操作
我需要将Java的这一小部分转换为C ++,但不知道'>>>'是什么......搜索过,但没有找到参考,只有在班次。有没有人有任何想法?
int x1;
x1 = text1[i1++] & 0xff;
text2[i2++] = (char) (x1 >>> 8);
可能重复:
什么是 C++ 中的 >>> 操作
我需要将Java的这一小部分转换为C ++,但不知道'>>>'是什么......搜索过,但没有找到参考,只有在班次。有没有人有任何想法?
int x1;
x1 = text1[i1++] & 0xff;
text2[i2++] = (char) (x1 >>> 8);
无符号右移 ( >>>
) 在 C++ 中不存在,因为它不是必需的——C++ 具有不同的有符号和无符号整数类型。如果您希望右移是无符号的,请将要移动的变量设为无符号:
unsigned int x1 = text1[i1++] & 0xff;
text2[i2++] = (char) (x1 >> 8);
话虽如此,您正在翻译的代码很愚蠢。在 Java 中,第二个操作的结果将始终为零,因此您可以轻松地将其转换为:
i1++;
text2[i2++] = 0;
C中的等价物是:
unsigned int x1;
x1 = text1[i1++] & 0xff;
text2[i2++] = (unsigned char)(x1 >> 8)
在 C 中,如果它正在操作的变量是有符号的,则移位运算符将从符号位拖动 1,否则它将像 java 无符号移位一样。