DataView 객체의 getInt32() 함수는 ArrayBuffer에서 지정된 바이트 오프셋 위치에 저장된 부호 있는(signed) 32비트 정수를 읽어 반환하는 메서드입니다. 이진 데이터를 다룰 때 특정 위치의 값을 정확하게 해석해야 하는 경우에 유용하게 사용됩니다.
구문(Syntax)
getInt32() 함수의 기본 구문은 다음과 같습니다.
dataView.getInt32(byteOffset);
첫 번째 인수인 byteOffset은 데이터를 읽어올 시작 위치(바이트 단위)를 나타냅니다.
기본 사용 예제
아래 예제는 setInt32()로 값을 저장한 후, getInt32()로 해당 값을 다시 읽어오는 과정을 보여줍니다.
<html> <head> <title>JavaScript Example</title> </head> <body> <script type="text/javascript"> var arrayBuffer = new ArrayBuffer(20); var dataView = new DataView(arrayBuffer); dataView.setInt32(1, 36274722); document.write(dataView.getInt32(1)); </script> </body> </html>
출력 결과
36274722
위 코드에서는 크기가 20바이트인 ArrayBuffer를 생성하고, 오프셋 1번 위치에 정수 36274722를 저장한 뒤 같은 위치에서 값을 읽어 그대로 출력합니다.
예제 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.setInt32(1, 554.36); document.write(dataView.getInt32(1)); </script> </body> </html>
출력 결과
554
소수점 이하 값 0.36은 버려지고 정수 부분인 554만 저장 및 반환되는 것을 확인할 수 있습니다.
예제 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.setInt32(1); document.write(dataView.getInt32(1)); </script> </body> </html>
출력 결과
0
ArrayBuffer는 생성 시 모든 비트가 0으로 초기화되기 때문에, 값을 쓰지 않은 영역을 읽으면 항상 0이 반환됩니다.
정리
DataView.getInt32()는 이진 데이터 처리 시 특정 오프셋의 부호 있는 32비트 정수를 안전하게 읽어낼 수 있는 표준 메서드입니다. 실수 입력 시 정수로 변환되며, 초기화되지 않은 영역은 0을 반환한다는 점을 기억해 두면 디버깅에 도움이 됩니다.