7zmethodid.cpp

来自「由7-zip提供的压缩、解压缩程序」· C++ 代码 · 共 79 行

CPP
79
字号
// 7zMethodID.cpp#include "StdAfx.h"#include "7zMethodID.h"namespace NArchive {namespace N7z {static wchar_t GetHex(Byte value){  return (value < 10) ? ('0' + value) : ('A' + (value - 10));}#if 0 // FIXED - USELESSstatic bool HexCharToInt(wchar_t value, Byte &result){  if (value >= '0' && value <= '9')    result = value - '0';  else if (value >= 'a' && value <= 'f')    result = 10 + value - 'a';  else if (value >= 'A' && value <= 'F')    result = 10 + value - 'A';  else    return false;  return true;}static bool TwoHexCharsToInt(wchar_t valueHigh, wchar_t valueLow, Byte &result){  Byte resultHigh, resultLow;  if (!HexCharToInt(valueHigh, resultHigh))    return false;  if (!HexCharToInt(valueLow, resultLow))    return false;  result = (resultHigh << 4) + resultLow;  return true;}bool CMethodID::ConvertFromString(const UString &srcString){  int length = srcString.Length();  if ((length & 1) != 0 || (length >> 1) > kMethodIDSize)    return false;  IDSize = length / 2;  UInt32 i;  for(i = 0; i < IDSize; i++)    if (!TwoHexCharsToInt(srcString[i * 2], srcString[i * 2 + 1], ID[i]))      return false;  for(; i < kMethodIDSize; i++)    ID[i] = 0;  return true;}#endifUString CMethodID::ConvertToString() const{  UString result;  for (int i = 0; i < IDSize; i++)  {    Byte b = ID[i];    result += GetHex(b >> 4);    result += GetHex(b & 0xF);  }  return result;}bool operator==(const CMethodID &a1, const CMethodID &a2){  if (a1.IDSize != a2.IDSize)    return false;  for (UInt32 i = 0; i < a1.IDSize; i++)    if (a1.ID[i] != a2.ID[i])      return false;  return true;}}}

⌨️ 快捷键说明

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