티스토리 뷰
플래시 기반의 오브젝트들을 네트웍으로 전달하는 포맷에 대한 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들을 설계하면 좋겠다는 생각이 드네요.
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SVN
- 구근
- SSO
- OpenID
- tattertools
- writely
- TCP/IP
- nodejs
- Linux
- perl
- 오픈소스
- macosx
- 덴드롱
- JavaScript
- 클레로덴드럼
- 벤자민
- 커피
- VIM
- MySQL
- ssh
- 킹벤자민
- 디버깅
- 퀴즈
- 식물
- url
- Subversion
- 수선화
- 대화
- BlogAPI
- Tattertools plugin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함