Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript DataView.setUint32() 함수 완벽 정리 – 문법과 예제

DataView 객체의 setUint32() 함수는 ArrayBuffer 내 지정된 바이트 오프셋 위치에 부호 없는 32비트 정수(unsigned 32-bit integer)를 저장합니다. 이진 데이터를 직접 다루어야 하는 파일 처리, 네트워크 프로토콜 구현 등에서 유용하게 활용됩니다.

문법(Syntax)

dataView.setUint32(byteOffset, value, littleEndian);

매개변수 설명

  • byteOffset: 값을 저장할 시작 위치입니다. 버퍼의 시작점부터의 바이트 오프셋을 의미합니다.
  • value: 저장할 숫자 값입니다. 부호 없는 32비트 정수 범위(0 ~ 4,294,967,295)로 변환되어 저장됩니다.
  • littleEndian (선택 사항): true이면 리틀 엔디안(little-endian) 방식으로, false 또는 생략하면 빅 엔디안(big-endian) 방식으로 저장합니다.

예제 1: 기본 사용법

다음 예제는 20바이트 크기의 ArrayBuffer를 생성하고, 오프셋 1번 위치에 값 45544를 저장한 뒤 다시 읽어 출력합니다.

<html>
<head>
    <title>JavaScript Example</title>
</head>
<body>
    <script type="text/javascript">
        var arrayBuffer = new ArrayBuffer(20);
        var dataView = new DataView(arrayBuffer);
        dataView.setUint32(1, 45544);
        document.write(dataView.getUint32(1));
    </script>
</body>
</html>

실행 결과

45544

예제 2: 실수(float) 값 전달 시 동작

setUint32() 함수에 소수점이 있는 실수 값을 전달하면, 해당 값은 정수로 잘려나간(truncate) 후 저장됩니다. 예를 들어 455.44를 전달하면 소수점 이하가 버려져 455만 저장됩니다.

<html>
<head>
    <title>JavaScript Example</title>
</head>
<body>
    <script type="text/javascript">
        var arrayBuffer = new ArrayBuffer(20);
        var dataView = new DataView(arrayBuffer);
        dataView.setUint32(1, 455.44);
        document.write(dataView.getUint32(1));
    </script>
</body>
</html>

실행 결과

455

예제 3: 값 없이 호출한 경우

저장할 값을 지정하지 않고 setUint32()를 호출하면 해당 위치에는 0이 저장됩니다. 따라서 이후 getUint32()로 데이터를 읽으면 0이 반환됩니다.

<html>
<head>
    <title>JavaScript Example</title>
</head>
<body>
    <script type="text/javascript">
        var arrayBuffer = new ArrayBuffer(20);
        var dataView = new DataView(arrayBuffer);
        dataView.setUint32(1);
        document.write(dataView.getUint32(1));
    </script>
</body>
</html>

실행 결과

0

정리

setUint32()는 DataView를 통해 이진 데이터에 부호 없는 32비트 정수를 기록하는 핵심 메서드입니다. 실수 값은 자동으로 정수로 변환되며, 값을 생략하면 0이 저장된다는 점을 기억해 두면 디버깅에 도움이 됩니다.