如何将此运算符 C# 代码表示为 java

本文关键字:代码表 表示 java 代码 运算符 | 更新日期: 2023-09-27 18:29:41

这个for循环中的第二行是什么意思,java中的代码表示是什么?

private List<int> channels = new List<int>();
private List<byte> packet= new List<int>();
      for (i = 0; i < 2; i++)
            {
                channels.Add((int)packet[2 + (2 * i)]);
                channels[i] += ((int)packet[2 + (2 * i) + 1] << 8) & 0xFF00;
            }

这是在 java 中执行上述代码的正确方法吗?

            for (i = 0; i < 2; i++) {
            channels.add(packet.get(2 + (2 * i)));
            byte temp=channels.get(i);
            temp+=((packet.get(2 + (2 * i) + 1) << 8) & 0xFF00);
            channels.set(i, temp);
        }

上面工作正常,但是,这会做得更好。感谢每一位的回复:

    for (i = 0; i < 2; i++) {
          channels.set(i, (byte) (packet.get(2 + (2 * i))+((packet.get(2 + (2 * i) + 1) << 8) & 0xFF00)));
}

如何将此运算符 C# 代码表示为 java

Java缺少的是运算符重载。因此,如果您使用 ArrayList<Integer> ,则需要使用 get()set()而不是[]运算符。

此外,我认为您无法在 C# 中为List<byte>分配List<int>

<<是位左移运算符,&是按位和。

在Java中也是如此。

1 << 1 == 2

0001向左移动 1 是0010

1 & 0 == 0   // 01 & 00 == 00
1 & 1 == 1   // 01 & 01 == 01
1 & 2 == 0   // 01 & 10 == 00
1 & 3 == 1   // 01 & 11 == 01