# Teil eines Arrays übergeben



## Rogie (4. Mrz 2008)

Hallo,
ich bin neu hier und komme ursprünglich aus der c++ Ecke, habe aber nun auch angefangen, in Java zu programmieren.
Ich habe folgendes Problem:

Wir empfangen über TCP/IP ByteStreams. Diese enthalten einen Header, welcher immer an Anfang des Telegramms vorhanden ist. Ich möchte nun einer Methode nur die Nutzdaten ohne die Headerdaten übergeben.

In C++ kann man ja dazu einfach den Pointer auf das erste Byte der Nutzdaten setzen und diesen dann der Methode übergeben. Wie kann ich so etwas in Java realisieren, da gibt es ja keine Zeiger. Es würde natürlich auch mit System.arraycopy gehen, aber da muss ja ein neues Array angelegt werden und dann kopiert werden, das wollte ich vermeiden.
Weiss jemand eine Lösung?

Hier etwas Code, wie es z.Z. gelöst ist, es fehlt noch der Methodenaufruf:


```
private void processSbsTelegram(byte[] data)
	{

		int len = ((data[0] &0xFF) << 8) + (data[1] &0xFF); 

		CSbsPartnerId recv = new CSbsPartnerId(data,3);
		
		if (recv.equals(Here))
		{
			byte[] theData = new byte[len - zwischenschichtHeaderLength];
			
			System.arraycopy(data, zwischenschichtHeaderLength, 
					         theData, 0, len - zwischenschichtHeaderLength);

			//TODO: Methode aufrufen
			
		}
	}
```


----------



## SlaterB (4. Mrz 2008)

in Java ist das so gelöst, dass man den ersten Index und den Endindex bzw. eher die Länge des TeilArrays übergibt,
siehe z.B.
ObjectOutputStream.write(byte[] b, int off, int len) 

Writes len bytes from the specified byte array starting at offset off to this output stream. The general contract for write(b, off, len) is that some of the bytes in the array b are written to the output stream in order; element b[off] is the first byte written and b[off+len-1] is the last byte written by this operation. 

nicht schön aber durchführbar


----------

