免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: hua6205
打印 上一主题 下一主题

关于EBCDIC转GBK的算法 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2013-10-20 13:53 |显示全部楼层
GBK汉字编码区间:
        ASCII(长方块)         EBCDIC
        ------------------      -------------------------
GBK/3:  8140 - A0FE             8141 - A181
UDC/3:  A140 - A7A0             7CA0 - 804E
GBK/5:  A840 - A995             425F - 44EC , CD41 - CDD5      查表
GBK/1:  A1A1 , A1A2 - A9FE      4040 , 4141 - 4753             查表
UDC/1:  AAA1 - AFFE             7641 - 78FD
GBK/2:  B0A1 - F7FE             48A0 - 6C9F
GBK/4:  AA40 - FD9B             A182 - CC67
        FD9C - FEA0             CE41 - CEA6
UDC/2:  F8A1 - FEFE             7941 - 7C9F

GBK ASCII码第1字节范围为81-FE
GBK ASCII码第2字节不能为7F,范围为40-FE
GBK ASCII码区间中未定义汉字或符号的部分编码转换为EBCDIC编码时全转为 FEFE

GBK EBCDIC汉字编码区间:
    4040, 4141-CEA6,除4040外,高字节:41-CE,低字节:41-FD(为80的仅4180,4680)
   GBK/1: 4040, 4141-4753
   GBK/2: 48A0-6C9F(低字节:41-FD,!=80),无5C9B-5C9F
   GBK/3: 8141-A181
   GBK/4: A182-CC67,CE41-CEA6
   GBK/5: 425F-44EC,CD41-CDD5
   UDC/1: 7641-78FD
   UDC/2: 7941-7C9F
   UDC/3: 7CA0-804E

论坛徽章:
0
2 [报告]
发表于 2013-10-20 13:54 |显示全部楼层
方块转换公式:
假设ASCII码是如下的方块:(从X1Y1到X2Y2,其中Y不等于7F)
      Y1   Y0              7F                              Y2
   X1 +----*---------------|-------------------------------+ X1
      |                    |                               |
      |          (X,Y)     |                               |
      |                    |                               |
      |                    |                               |
   X2 +--------------------|-------------------------------+ X2
      Y1                   7F                              Y2
对应EBCDIC码是如下的方块:(从E1B1到E2B2)
       B1   B0              80                            B2
    E1 +----*---------------|-----------------------------+ E1
       |                    |                             |
       |          (E,B)     |                             |
       |                    |                             |
       |                    |                             |
    E2 +--------------------|-----------------------------+ E2
       B1                   80                            B2
该区第一个汉字ASCII的X1Y0对应EBCDIC的E1B0,ASCII的(X,Y)对应EBCDIC的(E,B),
如果都是线性对应,那么(X,Y)到(X1,Y0)的距离应等于(E,B)到(E1,B0)的距离(即方
块内相距的汉字个数)

论坛徽章:
0
3 [报告]
发表于 2013-10-20 13:54 |显示全部楼层
本帖最后由 ux400 于 2013-10-20 13:56 编辑

USGS Rectangle_A2E(USGS X1Y1, USGS X2Y2, USGC Y0,
                   USGS E1B1, USGS E2B2, USGC B0,
                   USGS XY)
{
......
}

USGS Rectangle_E2A(USGS E1B1, USGS E2B2, USGC B0,
                   USGS X1Y1, USGS X2Y2, USGC Y0,
                   USGS EB)
{
......
}


USGS GBK_E2A_v3(USGS EBCDIC_Code)
{
......
  else if(HB_E >= 0xA1 && LB_E >= 0x41 &&
          HB_E <= 0xCC && LB_E <= 0xFD &&
          EBCDIC_Code <= 0xCC67)          /* GBK/4 */
    GB = Rectangle_E2A(0xA141, 0xCCFD, 0x82, 0xAA40, 0xFDA0, 0x40, EBCDIC_Code);
......
}

论坛徽章:
0
4 [报告]
发表于 2013-10-26 21:19 |显示全部楼层
最近太忙了,没空上来。我写到这份上你还看不明白的话,
1、你数学太弱了
2、你还是花点钱买代码算了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP