Chinaunix首页 | 论坛 | 博客
  • 博客访问: 469574
  • 博文数量: 66
  • 博客积分: 2125
  • 博客等级: 大尉
  • 技术积分: 704
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-08 13:42
个人简介

空气中的尘埃

文章分类

全部博文(66)

文章存档

2019年(1)

2017年(4)

2016年(2)

2015年(4)

2014年(4)

2013年(2)

2012年(5)

2011年(6)

2010年(9)

2009年(8)

2008年(12)

2007年(6)

2006年(2)

2005年(1)

我的朋友

分类: Java

2009-03-17 12:23:11

 某用户系统遗留数据, 使用了自定义的汉字库来显示朝鲜文字, 需要迁移到新的系统。所以写了个工具让老师自己根据字形点阵图形来录入文字.这样就可以通过录入的数据找到变形字代码和标准UTF-8字型代码之间的关系,并实现系统到开放平台的迁移。
以下是部分代码,希望对大家有用。
//根据字节数组来输出点阵
  public int[] getIntFromByte(byte[] byteparm){
        int[] tmpint = new int[byteparm.length];
        for(int i=0;i            tmpint[i]= byteparm[i]&0x000000ff;
        }
        return tmpint;
    }

public void viewmatrix(int[] buf ){
        int i16;       
        char string[]= new char[5];
        for(int i=0;i<32;i+=2){      //两位为一行 32, 一行16位,共16行。形成16*16 的字体点阵。
        i16 = buf[i]<<8 |buf[i+1];  //16位整形值
        char[] tmpc = Integer.toHexString(i16).toCharArray(); //
        for(int j=0;j            string[j] = tmpc[j];
        }
        for(int j=0;j<4;j++){     
            String tmp = "" + string[j];           
            string[j]=tmp.toUpperCase().charAt(0);
            }
          
                System.out.print(string);
                 for(int j=0;j<16;j++) {   //输出一行点阵
//如何确定的输出点或者不输出呢?   二进制10000 0000 0000 0000 右移位和 i16相与来判断i16位是否为0
                     if((i16   & (0x8000>>j))!=0)
                         System.out.printf("⑩");  
                      else  
                         System.out.printf("  ");  
                 }
              System.out.printf("\n");
        }
    }
 //显示所有16hzk 里的汉字
 public void viewall(String filename){
    try{
    java.io.File file = new java.io.File(filename);
    java.io.RandomAccessFile fins = new java.io.RandomAccessFile(file,"r");
    byte[] bf = new byte[32];
    int i = 0;
  
    while(fins.read(bf)==32){       
        int[] iuf = this.getIntFromByte(bf);
        this.viewmatrix(iuf);
        int py = i*32;       
        //System.out.println("---------------------------"+(tb.get(Long.toHexString(py))));
        i++;
    }
    fins.close();
    }catch(Exception e){
   
    }
    }
阅读(1902) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

fc60295852009-06-01 11:48:00

您好.最近我在接触HZK方面的知识.. 但是看了一下 您写的<< java 浏览 HZK16 汉字库的字型>> 博文..我把代码copy下来..好像少了一个 getIntFromByte(byte[] ) 的方法.. 您能不能给我一份源代码啊 fc6029585@163.com 或者您通过email指导我一下.行吗? 谢谢