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

📄 big5gb.cpp

📁 Big5,GB,Unicode互相转换的源代码。 C++编写
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/************************************************************************
*
*  Module name         : Big5GB.cpp
*
*  Module description  :
*     Convert encoding method between GB2312 and BIG5.
*
*  Project             : Generic
*
*  Target platform     : Win32
*
*  Compiler & Library  : Visual C++ 6.0
*
*  Author              : Richard Shen
*
*  Creation date       : 09 October, 2000
*
************************************************************************/
#include <windows.h>
#include "GBBig5Unicode.h"

// These "extern"s are actually in this file
extern const unsigned char    g2bTable[];
extern const long             g2bCount;
extern const unsigned char    b2gTable[];
extern const long             b2gCount;

/************************************************************************
*  Function name   : GBCodeToBBig5Code
*  Description     : Map GB2312 code to Big5 code.
*                  :
*  Parameters      : gbCode   - The GB code.
*  Returns         : The mapped Unicode.  NULL if error.
*  Author          : Richard Shen
* ----------------------------------------------------------------------
*  Date     By       Description
* ----------------------------------------------------------------------
*  09Oct00  RCS      Created.
************************************************************************/
const unsigned char *GBCodeToBig5Code(unsigned char *gbCode)
{
   const unsigned char  *mapped = 0;
   unsigned int         i;

   if ((*(gbCode + 1) >= 0xa1) && (*(gbCode + 1) <= 0xfe))
   {
      if ((*gbCode >= 0xa1) && (*gbCode <= 0xa9))
      {
         i      = ((*gbCode - 0xa1) * 94 + (*(gbCode + 1) - 0xa1)) * 2;
         mapped = &g2bTable[i];
      } /* end of if */
      else
      if ((*gbCode >= 0xb0) && (*gbCode <= 0xf7))
      {
         i      = ((*gbCode - 0xb0 + 9) * 94 + (*(gbCode + 1) - 0xa1)) * 2;
         mapped = &g2bTable[i];
      } /* end of if */
   } /* end of if */

   return mapped;
} // GBCodeToBig5Code()

/************************************************************************
*  Function name   : Big5CodeToGBCode
*  Description     : Map Big5 code to GB2312 code.
*                  :
*  Parameters      : b5Code   - The Big5 code.
*  Returns         : The mapped GBCode.  NULL if error.
*  Author          : Richard Shen
* ----------------------------------------------------------------------
*  Date     By       Description
* ----------------------------------------------------------------------
*  09Oct00  RCS      Created.
************************************************************************/
const unsigned char *Big5CodeToGBCode(unsigned char *b5Code)
{
   const unsigned char  *mapped = 0;
   unsigned int         i;

   if ((*b5Code >= 0xa1) && (*b5Code <= 0xfe))
   {
      if ((*(b5Code + 1) >= 0x40) && (*(b5Code + 1) <= 0x7e))
      {
         i      = ((*b5Code - 0xa1) * 157 + (*(b5Code + 1) - 0x40)) * 2;
         mapped = &b2gTable[i];
      } /* end of if */
      else
      if ((*(b5Code + 1) >= 0xa1) && (*(b5Code + 1) <= 0xfe))
      {
         i      = ((*b5Code - 0xa1) * 157 + (*(b5Code + 1) - 0xa1 ) + 63) * 2;
         mapped = &b2gTable[i];
      } /* end of if */
   } /* end of if */

   return mapped;
} // Big5CodeToGBCode()

/************************************************************************
*                       GB2312 to BIG5 mapping                          *
************************************************************************/
const unsigned char  g2bTable[] =
{
   0xa1,0x40, 0xa1,0x42, 0xa1,0x43, 0xa1,0x4f, 0xa1,0xc2, 0xa1,0xbc, 0xa1,0x4c,
   0xa1,0xb2, 0xa1,0xbc, 0xa2,0x77, 0xa1,0xe3, 0xa1,0xfc, 0xa1,0x4b, 0xa1,0xa5,
   0xa1,0xa6, 0xa1,0xa7, 0xa1,0xa8, 0xa1,0x65, 0xa1,0x66, 0xa1,0x71, 0xa1,0x72,
   0xa1,0x6d, 0xa1,0x6e, 0xa1,0x75, 0xa1,0x76, 0xa1,0x79, 0xa1,0x7a, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0x69, 0xa1,0x6a, 0xa1,0xd3, 0xa1,0xd1, 0xa1,0xd2, 0xa1,0x4a,
   0xa3,0x4e, 0xa1,0xbc, 0xa3,0x55, 0xa3,0x53, 0xa1,0xe5, 0xa1,0xe4, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xd4, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xe7, 0xa1,0xbc, 0xa1,0xf3,
   0xa1,0xec, 0xa1,0xed, 0xa1,0xdd, 0xa1,0xbc, 0xa1,0xdc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xda, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xd8, 0xa1,0xd9, 0xa1,0xdb, 0xa1,0xee,
   0xa1,0xef, 0xa1,0xf1, 0xa1,0xf0, 0xa2,0x58, 0xa1,0xac, 0xa1,0xaa, 0xa2,0x4a,
   0xa2,0x43, 0xa1,0xbc, 0xa2,0x46, 0xa2,0x47, 0xa1,0xbc, 0xa1,0xb1, 0xa1,0xbc,
   0xa1,0xb8, 0xa1,0xb9, 0xa1,0xb3, 0xa1,0xb4, 0xa1,0xb7, 0xa1,0xba, 0xa1,0xbb,
   0xa1,0xbc, 0xa1,0xbd, 0xa1,0xb5, 0xa1,0xb6, 0xa1,0xb0, 0xa1,0xf7, 0xa1,0xf6,
   0xa1,0xf4, 0xa1,0xf5, 0xa2,0xa4, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa2,0xb9,
   0xa2,0xba, 0xa2,0xbb, 0xa2,0xbc, 0xa2,0xbd, 0xa2,0xbe, 0xa2,0xbf, 0xa2,0xc0,
   0xa2,0xc1, 0xa2,0xc2, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0x49,
   0xa1,0xa9, 0xa1,0xad, 0xa2,0x43, 0xa2,0x48, 0xa1,0xae, 0xa1,0xac, 0xa1,0x5d,
   0xa1,0x5e, 0xa1,0xaf, 0xa1,0xcf, 0xa1,0x41, 0xa1,0xd0, 0xa1,0x44, 0xa1,0xfe,
   0xa2,0xaf, 0xa2,0xb0, 0xa2,0xb1, 0xa2,0xb2, 0xa2,0xb3, 0xa2,0xb4, 0xa2,0xb5,
   0xa2,0xb6, 0xa2,0xb7, 0xa2,0xb8, 0xa1,0x47, 0xa1,0x46, 0xa1,0xd5, 0xa1,0xd7,
   0xa1,0xd6, 0xa1,0x48, 0xa2,0x49, 0xa2,0xcf, 0xa2,0xd0, 0xa2,0xd1, 0xa2,0xd2,
   0xa2,0xd3, 0xa2,0xd4, 0xa2,0xd5, 0xa2,0xd6, 0xa2,0xd7, 0xa2,0xd8, 0xa2,0xd9,
   0xa2,0xda, 0xa2,0xdb, 0xa2,0xdc, 0xa2,0xdd, 0xa2,0xde, 0xa2,0xdf, 0xa2,0xe0,
   0xa2,0xe1, 0xa2,0xe2, 0xa2,0xe3, 0xa2,0xe4, 0xa2,0xe5, 0xa2,0xe6, 0xa2,0xe7,
   0xa2,0xe8, 0xa1,0xa3, 0xa2,0x40, 0xa1,0xa4, 0xa1,0x73, 0xa1,0x5a, 0xa1,0xab,
   0xa2,0xe9, 0xa2,0xea, 0xa2,0xeb, 0xa2,0xec, 0xa2,0xed, 0xa2,0xee, 0xa2,0xef,
   0xa2,0xf0, 0xa2,0xf1, 0xa2,0xf2, 0xa2,0xf3, 0xa2,0xf4, 0xa2,0xf5, 0xa2,0xf6,
   0xa2,0xf7, 0xa2,0xf8, 0xa2,0xf9, 0xa2,0xfa, 0xa2,0xfb, 0xa2,0xfc, 0xa2,0xfd,
   0xa2,0xfe, 0xa3,0x40, 0xa3,0x41, 0xa3,0x42, 0xa3,0x43, 0xa1,0x61, 0xa1,0x55,
   0xa1,0x62, 0xa1,0xc2, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa3,0x44, 0xa3,0x45, 0xa3,0x46, 0xa3,0x47, 0xa3,0x48, 0xa3,0x49,
   0xa3,0x4a, 0xa3,0x4b, 0xa3,0x4c, 0xa3,0x4d, 0xa3,0x4e, 0xa3,0x4f, 0xa3,0x50,
   0xa3,0x51, 0xa3,0x52, 0xa3,0x53, 0xa3,0x54, 0xa3,0x55, 0xa3,0x56, 0xa3,0x57,
   0xa3,0x58, 0xa3,0x59, 0xa3,0x5a, 0xa3,0x5b, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc,
   0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa1,0xbc, 0xa3,0x5c, 0xa3,0x5d,

⌨️ 快捷键说明

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