DataView 객체의 getUint16() 메서드는 ArrayBuffer 내 지정된 위치(바이트 오프셋)에서 부호 없는 16비트 정수(unsigned 16-bit integer)를 읽어 반환합니다. 이진 데이터를 정밀하게 다루어야 하는 상황에서 매우 유용한 메서드입니다.
문법(Syntax)
getUint16() 메서드의 기본 문법은 다음과 같습니다.
dataView.getUint16(byteOffset, [littleEndian]);
매개변수 설명:
- byteOffset: 값을 읽기 시작할 버퍼 내 위치(바이트 단위). 필수 값입니다.
- littleEndian(선택 사항): true이면 리틀 엔디안(little-endian), false이거나 생략하면 빅 엔디안(big-endian) 방식으로 값을 읽습니다.
예제 1: 기본 사용법
아래 예제에서는 setUint16() 메서드로 오프셋 위치 1에 값 45544를 저장한 뒤, getUint16()으로 해당 값을 다시 읽어 출력합니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setUint16(1, 45544); document.write(dataView.getUint16(1)); </script> </body> </html>
출력 결과
45544
예제 2: 실수(Float) 값 전달 시 동작
이 메서드에는 실수(float) 값을 직접 전달할 수 없습니다. 실수 값을 전달하면 소수점 이하가 잘려나간 정수 값으로 자동 변환되어 처리됩니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setUint16(1, 455.44); document.write(dataView.getUint16(1)); </script> </body> </html>
출력 결과
455
위 예제에서 455.44를 저장했지만, 출력 결과는 소수점이 제거된 455임을 확인할 수 있습니다.
예제 3: 값이 저장되지 않은 경우
DataView에 어떤 값도 저장하지 않은 상태에서 getUint16()을 호출하면, 해당 위치의 기본값인 0이 반환됩니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setUint16(1); document.write(dataView.getUint16(1)); </script> </body> </html>
출력 결과
0
정리
getUint16()은 ArrayBuffer에서 지정한 오프셋 위치의 부호 없는 16비트 정수를 읽어오는 메서드입니다. 실수 값은 정수로 변환되며, 값이 저장되지 않은 영역을 읽으면 0을 반환한다는 점을 기억해 두면 좋습니다.