⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rawread.cpp

📁 source code for unrar3.3.4,uppack the .rar files,for multi-os
💻 CPP
字号:
#include "rar.hpp"RawRead::RawRead(File *SrcFile){  RawRead::SrcFile=SrcFile;  ReadPos=0;  DataSize=0;#ifndef SHELL_EXT  Crypt=NULL;#endif}void RawRead::Read(int Size){#if !defined(SHELL_EXT) && !defined(NOCRYPT)  if (Crypt!=NULL)  {    int CurSize=Data.Size();    int SizeToRead=Size-(CurSize-DataSize);    if (SizeToRead>0)    {      int AlignedReadSize=SizeToRead+((~SizeToRead+1)&0xf);      Data.Add(AlignedReadSize);      int ReadSize=SrcFile->Read(&Data[CurSize],AlignedReadSize);      Crypt->DecryptBlock(&Data[CurSize],AlignedReadSize);      DataSize+=ReadSize==0 ? 0:Size;    }    else      DataSize+=Size;  }  else#endif    if (Size!=0)    {      Data.Add(Size);      DataSize+=SrcFile->Read(&Data[DataSize],Size);    }}void RawRead::Read(byte *SrcData,int Size){  if (Size!=0)  {    Data.Add(Size);    memcpy(&Data[DataSize],SrcData,Size);    DataSize+=Size;  }}void RawRead::Get(byte &Field){  Field=Data[ReadPos];  ReadPos++;}void RawRead::Get(ushort &Field){  Field=Data[ReadPos]+(Data[ReadPos+1]<<8);  ReadPos+=2;}void RawRead::Get(uint &Field){  Field=Data[ReadPos]+(Data[ReadPos+1]<<8)+(Data[ReadPos+2]<<16)+        (Data[ReadPos+3]<<24);  ReadPos+=4;}void RawRead::Get8(Int64 &Field){  uint Low,High;  Get(Low);  Get(High);  Field=int32to64(High,Low);}void RawRead::Get(byte *Field,int Size){  memcpy(Field,&Data[ReadPos],Size);  ReadPos+=Size;}void RawRead::Get(wchar *Field,int Size){  RawToWide(&Data[ReadPos],Field,Size);  ReadPos+=2*Size;}uint RawRead::GetCRC(bool ProcessedOnly){  return(DataSize>2 ? CRC(0xffffffff,&Data[2],(ProcessedOnly ? ReadPos:DataSize)-2):0xffffffff);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -