2014-10-14 3 views
1

GIF의 응용 프로그램 확장 블록을 디코딩하는 방법은 무엇입니까? "03 0100 0000"무엇GIF의 응용 프로그램 확장 블록을 디코딩하는 방법은 무엇입니까?

0000300: 73e7 d639 bdad 10ad 9c08 b5a5 0021 ff0b s..9.........!.. 
0000310: 4e45 5453 4341 5045 322e 3003 0100 0000 NETSCAPE2.0..... 
0000320: 21f9 0409 1900 f600 2c00 0000 0016 01b7 !.......,....... 
이 "

21 ff0b s..9.........!.. 
    0000310: 4e45 5453 4341 5045 322e 30 

는"알려진

하지만 무엇입니까?

답변

4

다음은 GIF Netscape Application 확장자 (from here)입니다.

블록의 길이는 19 바이트입니다. 처음 14 바이트는 일반 응용 프로그램 확장 형식에 속하며 구문은 GIF89a Specification, section "26. Application Extension"에 설명되어 있습니다.

는 구문

0 |  0x21  | Extension Label 
    +---------------+ 
1 |  0xFF  | Application Extension Label 
    +---------------+ 
2 |  0x0B  | Block Size 
    +---------------+ 
3 |    | 
    +-    -+ 
4 |    | 
    +-    -+ 
5 |    | 
    +-    -+ 
6 |    | 
    +- NETSCAPE -+ Application Identifier (8 bytes) 
7 |    | 
    +-    -+ 
8 |    | 
    +-    -+ 
9 |    | 
    +-    -+ 
10 |    | 
    +---------------+ 
11 |    | 
    +-    -+ 
12 |  2.0  | Application Authentication Code (3 bytes) 
    +-    -+ 
13 |    | 
    +===============+      --+ 
14 |  0x03  | Sub-block Data Size | 
    +---------------+      | 
15 |  0x01  | Sub-block ID   | 
    +---------------+      | Application Data Sub-block 
16 |    |      | 
    +-    -+ Loop Count (2 bytes) | 
17 |    |      | 
    +===============+      --+ 
18 |  0x00  | Block Terminator 

이미 NETSCAPE2.0까지의 데이터를 알고있다. 다음 바이트 0x03은 항상 3 바이트 인 다음 데이터 하위 블록 길이를 알려줍니다. 다음 0x01은 하위 블록 ID입니다. Netscape 블록의 경우 데이터 하위 블록은 하나 뿐이며 ID는 1입니다.

다음 2 바이트는 리틀 엔디안에서 루프 수를 지정합니다. 이미지 프레임을 반복해야하는 횟수는 0이며 0은 루프 을 의미합니다.입니다.

마지막 바이트 0x00은 데이터 블록을 종료하는 데 사용됩니다. 따라서 데이터 하위 블록 길이가 있어야하는 0x00을 만났을 때 하위 블록이 없다는 것을 알게되고 블록 읽기를 중지해야합니다.

관련 문제