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

📄 encname.cpp

📁 source code for unrar3.3.4,uppack the .rar files,for multi-os
💻 CPP
字号:
#include "rar.hpp"EncodeFileName::EncodeFileName(){  Flags=0;  FlagBits=0;  FlagsPos=0;  DestSize=0;}void EncodeFileName::Decode(char *Name,byte *EncName,int EncSize,wchar *NameW,                            int MaxDecSize){  int EncPos=0,DecPos=0;  byte HighByte=EncName[EncPos++];  while (EncPos<EncSize && DecPos<MaxDecSize)  {    if (FlagBits==0)    {      Flags=EncName[EncPos++];      FlagBits=8;    }    switch(Flags>>6)    {      case 0:        NameW[DecPos++]=EncName[EncPos++];        break;      case 1:        NameW[DecPos++]=EncName[EncPos++]+(HighByte<<8);        break;      case 2:        NameW[DecPos++]=EncName[EncPos]+(EncName[EncPos+1]<<8);        EncPos+=2;        break;      case 3:        {          int Length=EncName[EncPos++];          if (Length & 0x80)          {            byte Correction=EncName[EncPos++];            for (Length=(Length&0x7f)+2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)              NameW[DecPos]=((Name[DecPos]+Correction)&0xff)+(HighByte<<8);          }          else            for (Length+=2;Length>0 && DecPos<MaxDecSize;Length--,DecPos++)              NameW[DecPos]=Name[DecPos];        }        break;    }    Flags<<=2;    FlagBits-=2;  }  NameW[DecPos<MaxDecSize ? DecPos:MaxDecSize-1]=0;}

⌨️ 快捷键说明

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