我试图将此代码转换为python,但我很难这样做,不要担心索引值和变量名称,我只是想知道">>>"部分究竟做什么,也许是python等价物,但解释会很棒:
target[0] = (char)(source[sourceIndex] >>> 2);
target[1] = (char)((source[sourceIndex] & 3) << 4 | source[sourceIndex + 1] >>> 4);
target[2] = (char)((source[sourceIndex + 1] & 0xf) << 2 | source[sourceIndex + 2] >>> 6);
target[3] = (char)(source[sourceIndex + 2] & 0x3f);
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激
"<<<"和">>"是位移操作符.特别,
带符号的左移运算符"<<"将位模式向左移位,带符号的右移运算符">>"将位模式向右移位.位模式由左侧操作数给出,位置数由右侧操作数移位.无符号右移运算符">>>"将零移动到最左侧位置,而">>"之后的最左侧位置取决于符号扩展.
- 来自The Java™Tutorials - 按位和位移算子
这是一个"未签名的右移".
所以,如果你的数字(x)是11110000(二进制).
x >>> 1将01111000(二进制).
这x >> 1与11111000(二进制)相反.
在>>尝试保留"符号位",但>>>没有.
注意:我假设一个8位整数(或byteJava中的一个).对于2字节和4字节整数,同样适用.
| 归档时间: |
|
| 查看次数: |
890 次 |
| 最近记录: |