2012-04-02 8 views
1

Was bedeutet die zweite Zeile innerhalb dieser for-Schleife und was wird die Code-Darstellung in Java sein?Wie diesen Operator C# -Code in Java darstellen?

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; 
      } 

Ist dies der richtige Weg, um oben genannten Code in Java zu tun?

  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); 
     } 

Oben funktioniert gut, aber das würde die Dinge besser machen. Dank jeder für Antwort:

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

Welcher Teil dieser Zeile ist Ihnen unklar? – Heinzi

+0

2. Zeile innen für Schleife nach + =, was ist << und & macht? – Milan

+1

Sie sind Bit-Operationen und funktionieren auf die gleiche Weise in C# und [Java] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html). – assylias

Antwort

1

Was von Java fehlt Überladen von Operatoren ist. Wenn Sie also ArrayList<Integer> verwenden, müssen Sie anstelle des Operators []get() und set() verwenden.

Darüber hinaus glaube ich nicht, dass Sie eine List<int> zu einem List<byte> in C# zugewiesen haben könnten.

+0

Überprüfen Sie die Frage jetzt. Ist es richtig? – Milan

+0

Es sieht so aus, als könnte es funktionieren, aber es wäre wahrscheinlich effizienter, einfach Ihre Summe zu "channels" hinzuzufügen, anstatt den ersten Begriff hinzuzufügen, ihn abzurufen und hinzuzufügen. – Vlad

+0

Ich denke, das ist jetzt besser, check out edit. – Milan

1

<< ist der Shift-Operator Bit nach links und & ist bitweise und.

Es ist das gleiche in Java.

1 << 1 == 2 

0001 nach links 1 verschoben ist 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 
+0

was macht es? bitte irgendein Beispiel? – Milan

+2

http://en.wikipedia.org/wiki/Bitwise_operation –

+0

'0001' nach links verschoben 1 ist' 0010' – JeremyP