가변 길이 수량 인코딩과 디코딩을 구현해요.
이 연습 문제의 목표는 VLQ 인코딩과 디코딩을 구현하는 거예요.
간단히 말해, 이 인코딩의 목표는 바이트를 절약하는 방식으로 정수 값을 인코딩하는 거예요. 각 바이트에서 처음 7비트만 의미가 있어요(오른쪽으로 정렬되고, 어쩐지 ASCII 바이트와 비슷하죠). 그래서 32비트 값이 있다면, 그 값을 7비트 바이트 여러 개로 풀어내야 해요. 물론 정수에 따라 바이트 개수는 달라져요. 여러 바이트 가운데 어느 것이 마지막인지 나타내려면, 7번 비트를 0으로 남겨 둬요. 앞에 오는 모든 바이트에서는 7번 비트를 1로 설정해요.
따라서 정수가 0-127 사이에 있다면, 한 바이트로 표현할 수 있어요.
VLQ는 임의 크기의 수를 다룰 수 있지만, 이 연습 문제에서는 32비트 부호 없는 정수에 들어가는 수만 다루기로 해요.
다음은 32비트 값으로 표현한 정수와, 그에 대응하는 가변 길이 수량의 예예요:
NUMBER VARIABLE QUANTITY
00000000 00
00000040 40
0000007F 7F
00000080 81 00
00002000 C0 00
00003FFF FF 7F
00004000 81 80 00
00100000 C0 80 00
001FFFFF FF FF 7F
00200000 81 80 80 00
08000000 C0 80 80 00
0FFFFFFF FF FF FF 7F
Exercism에 가입하고 Elixir 트랙을 개념 58개연습 문제 168개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.