说知道哪里能找到RAR和ISO的文件格式说明。
100分等你来拿。

解决方案 »

  1.   

    rar,不就是一种压缩文件吗,用winrar就可以解压的和zip是一样的,ISO是一种光盘镜像文件,用虚拟光驱就可以打开
      

  2.   

    RAR version 2.02 - Technical information
      Archive file consists of variable length blocks. The order of these
    blocks may vary, but the first block must be a er block followed by
    an archive header block.   Each block begins with the following fields:HEAD_CRC       2 bytes     CRC of total block or block part
    HEAD_TYPE      1 byte      Block type
    HEAD_FLAGS     2 bytes     Block flags
    HEAD_SIZE      2 bytes     Block size
    ADD_SIZE       4 bytes     Optional field - added block size   Field ADD_SIZE present only if (HEAD_FLAGS & 0x8000) != 0   Total block size is HEAD_SIZE if (HEAD_FLAGS & 0x8000) == 0
    and HEAD_SIZE+ADD_SIZE if the field ADD_SIZE is present - when
    (HEAD_FLAGS & 0x8000) != 0.   In each block the followings bits in HEAD_FLAGS have the same meaning:  0x4000 - if set, older RAR versions will ignore the block
               and remove it when the archive is updated.
               if clear, the block is copied to the new archive
               file when the archive is updated;  0x8000 - if set, ADD_SIZE field is present and the full block
               size is HEAD_SIZE+ADD_SIZE.  Declared block types:HEAD_TYPE=0x72          er block
    HEAD_TYPE=0x73          archive header
    HEAD_TYPE=0x74          file header
    HEAD_TYPE=0x75          comment header
    HEAD_TYPE=0x76          extra information
    HEAD_TYPE=0x77          subblock
    HEAD_TYPE=0x78          recovery record   Comment block is actually used only within other blocks and doesn't
    exist separately.   Archive processing is made in the following manner:1. Read and check er block
    2. Read archive header
    3. Read or skip HEAD_SIZE-sizeof(MAIN_HEAD) bytes
    4. If end of archive encountered then terminate archive processing,
       else read 7 bytes into fields HEAD_CRC, HEAD_TYPE, HEAD_FLAGS,
       HEAD_SIZE.
    5. Check HEAD_TYPE.
       In case block read needed:
             if HEAD_TYPE==0x74
               read file header ( first 7 bytes already read )
               read or skip HEAD_SIZE-sizeof(FILE_HEAD) bytes
               read or skip FILE_SIZE bytes
             else
               read corresponding HEAD_TYPE block:
                 read HEAD_SIZE-7 bytes
                 if (HEAD_FLAGS & 0x8000)
                   read ADD_SIZE bytes
       In case block skip needed:
             skip HEAD_SIZE-7 bytes
             if (HEAD_FLAGS & 0x8000)
               skip ADD_SIZE bytes
    6. go to 4.
      

  3.   

    Block Formats
    Marker block ( MARK_HEAD )HEAD_CRC        Always 0x6152
    2 bytesHEAD_TYPE       Header type: 0x72
    1 byteHEAD_FLAGS      Always 0x1a21
    2 bytesHEAD_SIZE       Block size = 0x0007
    2 bytes   The er block is actually considered as a fixed byte
    sequence: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00   Archive header ( MAIN_HEAD )
    HEAD_CRC        CRC of fields HEAD_TYPE to RESERVED2
    2 bytesHEAD_TYPE       Header type: 0x73
    1 byteHEAD_FLAGS      Bit flags:
    2 bytes
                    0x01    - Volume attribute (archive volume)
                    0x02    - Archive comment present
                    0x04    - Archive lock attribute
                    0x08    - Solid attribute (solid archive)
                    0x10    - Unused
                    0x20    - Authenticity information present                other bits in HEAD_FLAGS are reserved for
                    internal useHEAD_SIZE       Archive header total size including archive comments
    2 bytesRESERVED1       Reserved
    2 bytesRESERVED2       Reserved
    4 bytesComment block   present if (HEAD_FLAGS & 0x02) != 0   File header (File in archive)
    HEAD_CRC        CRC of fields from HEAD_TYPE to FILEATTR
    2 bytes         and file nameHEAD_TYPE       Header type: 0x74
    1 byteHEAD_FLAGS      Bit flags:
    2 bytes
                    0x01 - file continued from previous volume
                    0x02 - file continued in next volume
                    0x04 - file encrypted with password
                    0x08 - file comment present
                    0x10 - information from previous files is used (solid flag)
                           (for RAR 2.0 and later)                bits 7 6 5 (for RAR 2.0 and later)                     0 0 0    - dictionary size   64 Kb
                         0 0 1    - dictionary size  128 Kb
                         0 1 0    - dictionary size  256 Kb
                         0 1 1    - dictionary size  512 Kb
                         1 0 0    - dictionary size 1024 Kb
                         1 0 1    - reserved
                         1 1 0    - reserved
                         1 1 1    - file is directory                (HEAD_FLAGS & 0x8000) == 1, because full
                    block size is HEAD_SIZE + PACK_SIZEHEAD_SIZE       File header full size including file name and comments
    2 bytesPACK_SIZE       Compressed file size
    4 bytesUNP_SIZE        Uncompressed file size
    4 bytesHOST_OS         Operating system used for archiving
    1 byte                 0 - MS DOS
                           1 - OS/2
                           2 - Win32
                           3 - UnixFILE_CRC        File CRC
    4 bytesFTIME           Date and time in standard MS DOS format
    4 bytesUNP_VER         RAR version needed to extract file
    1 byteMETHOD          Packing method
    1 byteNAME_SIZE       File name size
    2 bytesATTR            File attributes
    4 bytesFILE_NAME       File name - string of NAME_SIZE bytes sizeCmment block   present if (HEAD_FLAGS & 0x08) != 0  Comment blockHEAD_CRC        CRC of fields from HEAD_TYPE to COMM_CRC
    2 bytesHEAD_TYPE       Header type: 0x75
    1 byteHEAD_FLAGS      Bit flags
    2 bytesHEAD_SIZE       Comment header size + comment size
    2 bytesUNP_SIZE        Uncompressed comment size
    2 bytesUNP_VER         RAR version needed to extract comment
    1 byteMETHOD          Packing method
    1 byteCOMM_CRC        Comment CRC
    2 bytesCOMMENT         Comment text
     Extra info block
    HEAD_CRC        Block CRC
    2 bytesHEAD_TYPE       Header type: 0x76
    1 byteHEAD_FLAGS      Bit flags
    2 bytesHEAD_SIZE       Total block size
    2 bytesINFO            Other data
      SubblockAn object in the archive (the block or header) can be followed
    by a subblock. The subblock is dependant upon the main object.
    Subblock can be erased or moved to a new version of the archive
    when it is updated. The subblock contains the following fields:HEAD_CRC        Block CRC
    2 bytesHEAD_TYPE       Header type: 0x77
    1 byteHEAD_FLAGS      Bit flags
    2 bytes
                    (HEAD_FLAGS & 0x8000) == 1, because full
                    block size is HEAD_SIZE + DATA_SIZEHEAD_SIZE       Total block size
    2 bytesDATA_SIZE       Total data size
    4 bytesSUB_TYPE        Subblock type
    2 bytesRESERVED        Must be 0
    1 byteOther           Other fields depending on the subblock type
    fields
      OS/2 extended attributes subblock
    HEAD_CRC        Block CRC
    2 bytesHEAD_TYPE       Header type: 0x77
    1 byteHEAD_FLAGS      Bit flags
    2 bytes
                    (HEAD_FLAGS & 0x8000) == 1, because full
                    block size is HEAD_SIZE + DATA_SIZEHEAD_SIZE       Total block size
    2 bytesDATA_SIZE       Total data size (packed extended attributes size)
    4 bytesSUB_TYPE        0x100
    2 bytesRESERVED        Must be 0
    1 byteUNP_SIZE        Uncompressed extended attributes size
    4 bytesUNP_VER         RAR version needed to extract extended attributes
    1 byteMETHOD          Packing method
    1 byteEA_CRC          Extended attributes CRC
    4 bytes