Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13051
  • 博文数量: 4
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-29 20:08
文章分类

全部博文(4)

文章存档

2011年(1)

2009年(3)

我的朋友
最近访客

分类:

2009-04-28 09:06:18

http://blog.csdn.net/MinistoneNap/archive/2006/12/05/1431004.aspx

   前面已提到,汉字是由两个字节构成的,每个字节占八位(8bits),那么每个汉字需要占十六位(16bits)。而且由于中文字符的每个字节的最高位为1,则每个字节的ASCII码均大于127(27-1)。这是中文处理问题的基础。本文研究的是国标码(GB2312-80),即信息交换用汉字编码字符集---基本集。国标码字符的两个字节的ASCII码都是161--254之间的整数。根据这些信息,我们可以很方便的处理涉及国标码的有关程序问题。

   我用java程序实现了由机器自动生成国标码。其基本思想是用循环产生每个字节的ASCII码,然后连接两个字节的字符串,再以文本形式输出到二进制文件中。代码如下:

    import java.io.*;


    public class GB2312_80 {
        public static void main(String args[]) throws IOException{
            File newDir = new File("d:\\java\\test2");
            File newFile = new File(newDir, "GB2312_80.chr");
            if (!newFile.exists()){
                newFile.createNewFile();
            }


            RandomAccessFile newFileW = new RandomAccessFile(newFile, "rw");
            int i, j;
  
            for(i = 161; i < 255; i++)
                for (j = 161; j < 255; j++){    
                    String m1 = Integer.toString(i,2); //将ASCII码值(十进制)转换为二进制字符串
                    String n1 = Integer.toString(j, 2);
                    String x = m1 + n1; //连接两个字符串使之变为16位的字符串(即两个字节)
                    long x1 = Long.parseLong(x, 2); //将字符串转换为长整型数据
         

                    newFileW.writeLong(x1); //输出字符
            }
        }

     }

阅读(1431) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~