버퍼 복사 함수 설명
buffer_copy
함수는 한 버퍼에 저장된 데이터의 일부(또는 전체)를 다른 버퍼로 복사하는 기능을 제공합니다. 두 개의 버퍼를 사용하여 데이터를 복사할 때, 두 버퍼는 반드시 buffer_create
함수를 사용하여 생성되어야 하며, 복사할 데이터의 시작점과 복사할 위치를 바이트 단위로 지정할 수 있습니다.
구문
buffer_copy(src_buffer, src_offset, size, dest_buffer, dest_offset);
인수 설명
인수 이름 | 타입 | 설명 |
---|---|---|
src_buffer | Buffer | 복사할 원본 버퍼 |
src_offset | Real | 복사 시작점의 데이터 오프셋 (바이트 단위) |
size | Real | 복사할 데이터의 크기 (바이트 단위) |
dest_buffer | Buffer | 복사할 대상 버퍼 |
dest_offset | Real | 데이터를 복사할 위치의 오프셋 (바이트 단위) |
반환 값
- N/A
예제 1: 전체 버퍼 내용 복사하기
buff1 = buffer_create(2048, buffer_grow, 1);
buff2 = buffer_create(2048, buffer_grow, 1);
repeat(2048) {
buffer_write(buff1, buffer_u8, irandom(255));
}
buffer_copy(buff1, 0, 2048, buff2, 0);
위 코드는 두 개의 버퍼 buff1
과 buff2
를 생성하고, buff1
에 랜덤 바이트로 채운 후, buff1
의 모든 내용을 buff2
로 복사합니다. 복사는 buff1
의 시작점에서 시작하며, buff2
의 시작점에 데이터를 씁니다. 결과적으로 buff2
는 buff1
과 동일한 바이트를 포함하게 됩니다.
예제 2: 오프셋에서 시작하여 버퍼 복사하기
buff1 = buffer_create(2048, buffer_fixed, 1);
buff2 = buffer_create(2048, buffer_fixed, 1);
repeat(2048) {
buffer_write(buff1, buffer_u8, irandom(255));
}
var _offset = 273;
var _size = buffer_get_size(buff1) - _offset;
buffer_copy(buff1, _offset, _size, buff2, 0);
이 예제는 첫 번째 예제와 유사하게 두 개의 버퍼를 생성하고, 첫 번째 버퍼에 랜덤 바이트를 채운 후, 특정 오프셋에서 시작하여 데이터를 복사합니다. _offset
에서 시작하여 _size
만큼의 바이트를 buff2
로 복사합니다. 이 경우, buff1
의 _offset
인덱스에 있는 바이트는 buff2
의 0번 인덱스에 복사됩니다.
활용 예제
예제 3: 특정 크기만큼 복사하기
buff1 = buffer_create(1024, buffer_fixed, 1);
buff2 = buffer_create(512, buffer_fixed, 1);
repeat(1024) {
buffer_write(buff1, buffer_u8, irandom(255));
}
buffer_copy(buff1, 100, 512, buff2, 0);
예제 4: 중간에서 복사하기
buff1 = buffer_create(2048, buffer_fixed, 1);
buff2 = buffer_create(1024, buffer_fixed, 1);
repeat(2048) {
buffer_write(buff1, buffer_u8, irandom(255));
}
buffer_copy(buff1, 512, 1024, buff2, 0);
예제 5: 복사 후 데이터 확인하기
buff1 = buffer_create(256, buffer_fixed, 1);
buff2 = buffer_create(256, buffer_fixed, 1);
repeat(256) {
buffer_write(buff1, buffer_u8, irandom(255));
}
buffer_copy(buff1, 0, 256, buff2, 0);
var check = buffer_read(buff2, buffer_u8);
이와 같은 방식으로 buffer_copy
함수를 활용하여 다양한 데이터 복사 작업을 수행할 수 있습니다.