WEB开发网
开发学院软件开发VC 常用编码详解 阅读

常用编码详解

 2007-07-21 21:36:06 来源:WEB开发网   
核心提示: 注:在编码处理时候,我们需要对一个字节判断属于哪类字符,常用编码详解(6),以便确定处理规则,如果简单的使用范围比较的方式,需要一个哈希表,对一个base64字符都可以直接得到0-64之间的一个数:byte base64Value[128];这两个哈希表在使用前要初始化:void init

注:在编码处理时候,我们需要对一个字节判断属于哪类字符,以便确定处理规则,如果简单的使用范围比较的方式,效率很低,我们采用哈希表的思路:建立一个256长的数组,那么对于每一个字节的值,就可以定义一个类型。判断时候,对每个字符都直接取数组的值。

// mask value defined for indentify the type of a byte
#define  BASE64    0x01
#define  SAFE    0x02
#define  SPACE    0x04
byte byteType[256];    // hash table used for find the type of a byte
bool firstTime = true;   // the first time to use the lib, wait for init the table
// 注:为了解码base64编码部分的字符,需要一个哈希表,对一个base64字符都可以直接得到0-64之间的一个数:
byte base64Value[128];
这两个哈希表在使用前要初始化:
void initUTF7Tables()
{
  byte *s;
  if(!firstTime)
  return;
  // not necessary, but should do it to be robust
  memset(byteType, 0, 256);
  memset(base64Value, 0, 128);
  
  for(s=base64Chars; *s!=''''; s++)
  {
    byteType[*s] |= BASE64;
    base64Value[*s] = s - base64Chars; // the offset, it is a 6bits value,0-64
  }
  
  for(s=safeChars; *s!=''''; s++)
    byteType[*s] |= SAFE;
   
  for(s=spaceChars; *s!=''''; s++)
    byteType[*s] |= SPACE;
  firstTime = false;
}
UTF-7编码转换时候,是与当前字符是与状态有关的,也就是说:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:常用 编码 详解

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接