티스토리 뷰


플래시 기반의 오브젝트들을 네트웍으로 전달하는 포맷에 대한 Action Message Format의 스펙을 보면, 앞 부분에 정수형에 대한 encoding이 나옵니다.

0x00000000 - 0x0000007F: 0xxxxxxx
0x00000080 - 0x00003FFF: 1xxxxxxx 0xxxxxxx
0x00004000 - 0x001FFFFF: 1xxxxxxx 1xxxxxxx 0xxxxxxx
0x00200000 - 0x3FFFFFFF: 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx
0x40000000 - 0xFFFFFFFF: throw range exception



와 같은 표를 볼 수 있는데요. 흥미로운 것은 UTF8과 비슷한 방식으로 값에 따라 인코딩 결과가 1 바이트에서 4바이트를 취한다는 것이고요. 일정한 검증 규칙으로서 최상위 비트가 1로 진행하다 0으로 종료하는 형태를 띈다는 것입니다. 그렇게 함으로써,
  • tiny int 영역인 0x7f까지의 7 bit 사이즈는 1 byte로 전송이 되고,
  • 16K 이하의 값을 나타내는 0x4000 미만은 2 byte로 전송되며,
  • 2MB 정도를 나타내는 21bit 사이즈는 3 byte로 전송되고
  • 그 이상 29bit 정수까지는 4바이트로 전송된다는 것입니다.
  • 그리고, 30, 31, 32 bit 정수는 아예 취급을 안하겠다는 것인지 exception을 내는군요.
아이디어가 좋습니다. 그리고, 이 포맷이 1 byte를 아껴야하는 상황까지 고려한 설계라는 것이 훌륭합니다. AMF 를 이용한 Client/Server 프로그래밍에서 정말 Server/Client 들이 저런 수준의 설계를 받쳐 줄만한 상위 설계를 하는지는 모르겠지만, 이런 사실을 알고 졸라 메는 정신으로 Flash 및 Server Side Script들을 설계하면 좋겠다는 생각이 드네요.
반응형
댓글
댓글쓰기 폼