buffer_tell 함수 설명
buffer_tell
함수는 다른 버퍼 함수에서 사용할 현재 "시크" 위치를 가져오는 기능을 제공합니다. 데이터를 버퍼에 읽거나 쓸 때, 현재 "시크" 위치는 읽거나 쓴 바이트 수만큼 이동합니다. 예를 들어, 버퍼 정렬이 4바이트로 설정되어 있고, 1바이트 크기의 데이터를 한 번 쓴 후 buffer_tell
을 호출하면 반환값은 1이 됩니다. 그러나 또 다른 1바이트 크기의 데이터를 쓴 후 buffer_tell
을 호출하면, 정렬이 데이터를 해당 위치로 "패딩"했기 때문에 반환값은 5가 됩니다.
버퍼의 시크 값을 변경하려면 buffer_seek
함수를 사용합니다.
문법
buffer_tell(buffer);
인수
인수 | 유형 | 설명 |
---|---|---|
buffer | Buffer | 사용할 버퍼 |
반환값
- 실수형 값 (Real)
예제
var _pos = buffer_tell(buff);
buffer_seek(buff, buffer_seek_start, 0);
val[0] = buffer_read(buff, buffer_S16);
val[1] = buffer_read(buff, buffer_S16);
val[2] = buffer_read(buff, buffer_S16);
buffer_seek(buff, buffer_seek_start, _pos);
위 코드는 buff
에 저장된 버퍼의 현재 시크 위치를 _pos
라는 지역 변수에 저장합니다. 그 후 버퍼의 시크 위치를 시작으로 설정하고, 세 개의 데이터를 배열에 읽어들인 다음, 마지막으로 버퍼의 시크 위치를 이전 위치로 재설정합니다.
활용 예제
1. 버퍼에서 데이터 읽기
var data_size = buffer_tell(buff);
buffer_seek(buff, buffer_seek_start, 0);
var data = buffer_read(buff, buffer_U8);
buffer_seek(buff, buffer_seek_start, data_size);
2. 버퍼에 데이터 쓰기
buffer_write(buff, buffer_U8, 255);
var current_pos = buffer_tell(buff);
buffer_write(buff, buffer_U8, 128);
buffer_seek(buff, buffer_seek_start, current_pos);
3. 버퍼의 특정 위치로 이동
buffer_seek(buff, buffer_seek_start, 10);
var value = buffer_read(buff, buffer_S32);
4. 버퍼의 끝으로 이동
buffer_seek(buff, buffer_seek_end, 0);
var end_value = buffer_read(buff, buffer_S16);
이와 같이 buffer_tell
함수는 버퍼의 현재 위치를 확인하고, 데이터의 읽기 및 쓰기 작업을 보다 효율적으로 관리하는 데 유용합니다.