DataView 객체의 setInt16() 함수는 지정된 바이트 오프셋 위치에 부호 있는(signed) 16비트 정수를 저장하는 메서드입니다. ArrayBuffer 내부의 이진 데이터를 다룰 때 유용하게 사용됩니다.
문법(Syntax)
setInt16() 함수의 기본 문법은 다음과 같습니다.
dataView.setInt16(byteOffset, value, littleEndian);
매개변수 설명:
- byteOffset – 값을 저장할 버퍼 내 시작 위치(바이트 단위)
- value – 저장할 16비트 정수 값
- littleEndian (선택 사항) – true이면 리틀 엔디안 방식으로 저장하며, 생략하거나 false이면 빅 엔디안 방식으로 저장됩니다.
예제 1: 기본 사용법
다음 예제에서는 setInt16()으로 값을 저장한 뒤, getInt16()을 사용하여 읽어옵니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setInt16(1, 3225);
document.write(dataView.getInt16(1));
</script>
</body>
</html>
출력 결과
3225
예제 2: 실수(float) 값 전달하기
setInt16() 함수에 소수점이 포함된 실수(float) 값을 전달할 수 없습니다. 만약 실수 값을 인자로 넘기면 해당 값은 자동으로 정수로 변환(절삭)되어 처리됩니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setInt16(1, 564.22);
document.write(dataView.getInt16(1));
</script>
</body>
</html>
출력 결과
564
위 예제에서 564.22가 그대로 저장되지 않고 소수점 아래 값이 잘린 564로 저장된 것을 확인할 수 있습니다.
예제 3: 값 없이 호출하는 경우
DataView에 아무런 값도 저장하지 않은 상태에서 데이터를 읽으려고 하면 이 함수는 0을 반환합니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setInt16(1);
document.write(dataView.getInt16(1));
</script>
</body>
</html>
출력 결과
0
값이 저장되지 않은 버퍼의 초기 상태는 모든 비트가 0으로 채워져 있기 때문에, getInt16()으로 읽었을 때 0이 반환되는 것입니다.