1. 배열명을 사용한 배열 표현

   : aa[0];


2. 배열명을 사용한 포인터 표현

   : *(aa+0);


3. 배열명을 저장한 포인터 변수를 사용한 포인터 표현

   : int *ap = aa;     

     ap+0;


4. 배열명을 저장한 포인터 변수를 사용한 배열 표현

   : int *ap = aa;     

     ap[0];


* 배열요소는 참조하는 기본 방식이 포인터 계산에 의한 것이므로 계산 결과가 같다면 표현 형태는 얼마든지 바뀔 수 있음


예) *(ary) == *ary == *(ary+0)

     ary[1] == *(ary+1) == *(1+ary) == 1[ary]

패킷통신을 사용하는 프로그램을 짜던 중 전송한 패킷의 무결성을 위해 CRC 값을 붙여 전송해야 할 일이 생겼다.

이 참이 바이트 배열을 합치는 방법에 대해 포스팅 해 본다.


이 때 사용되는 함수는 System.arraycopy이다.

아래 코드는 byte 배열을 받아 마지막 2 byte에 0x12, 0x34를 붙여 주는 함수이다.

1
2
3
4
5
6
7
8
9
10
11
12
  
public byte[] addPacket(byte[] origin)
{               
    byte[] packet_data = new byte[origin.length + 2];
    byte[] addPacket = {0x12, 0x34};
 
    System.arraycopy(origin, 0, packet_data, 0, origin.length);
    System.arraycopy(addPacket, 0, packet_data, origin.length, 2);
         
    return packet_data;
}
  


+ Recent posts