가변길이량(variable-length quantity)
본 문서에서는 바이트에서 최하위 비트를 0번째 비트라 하고, 최상위 비트를 7번째 비트라 한다.
미디파일의 몇몇 수는 가변길이량이라는 꼴로 표현된다. 이 수들은 한 바이트당 일곱 비트로 표현되며 최상위 비트가 먼저다. 마지막 말고 모든 바이트는 7째 비트를 설정하고, 마지막 바이트의 7째 비트는 비운다. 수가 0~127이면 정확히 한 바이트로 표현된다.
가변길이량으로 표현된 숫자의 예시들이 몇 개 있다.
표현할 수(16진) | 표현할 수(2진) | 가변길이식(2진) | 가변길이식(16진) |
---|---|---|---|
0 0 0 0 0 0 0 0 | 00000000 00000000 00000000 00000000 | 00000000 | 0 0 |
0 0 0 0 0 0 7 F | 00000000 00000000 00000000 01111111 | 01111111 | 7 F |
0 0 0 0 0 0 8 0 | 00000000 00000000 00000000 10000000 | 1000000100000000 | 8 1 0 0 |
0 0 0 0 2 0 0 0 | 00000000 00000000 00100000 00000000 | 1100000000000000 | C 0 0 0 |
0 0 0 0 3 F F F | 00000000 00000000 00111111 11111111 | 1111111101111111 | F F 7 F |
0 0 0 0 4 0 0 0 | 00000000 00000000 01000000 00000000 | 100000011000000000000000 | 8 1 8 0 0 0 |
0 0 1 0 0 0 0 0 | 00000000 00010000 00000000 00000000 | 110000001000000000000000 | C 0 8 0 0 0 |
0 0 1 F F F F F | 00000000 00011111 11111111 11111111 | 111111111111111101111111 | F F F F 7 F |
0 0 2 0 0 0 0 0 | 00000000 00100000 00000000 00000000 | 10000001100000001000000000000000 | 8 1 8 0 8 0 0 0 |
0 8 0 0 0 0 0 0 | 00001000 00000000 00000000 00000000 | 11000000100000001000000000000000 | C 0 8 0 8 0 0 0 |
0 F F F F F F F | 00001111 11111111 11111111 11111111 | 11111111111111111111111101111111 | F F F F F F 7 F |
(`대충 이 방식이 허용하는 최대치가 0F FF FF FF인데 이게 존나 큰 수라는 내용)
※대충, 각 바이트(비트 8개) 중에서 일곱 비트만 수 표현에 쓰고 첫째 비트 한 개는 "다음 바이트 있음" 표시라는 뜻. 바이트를 최대 네 개까지만 씀. 네 번째 바이트는 무조건 다음 바이트가 없으니까 네 번째 바이트의 첫째비트는 쓸모없음(0). 0부터 127까지는 바이트 하나로 표현돼서 평범한 1바이트랑 똑같이 생김. 멫 바이트 줄인다고 똥꼬쇼 오졌죠?