1, 获取big5
2, 获取ba[i](共32位)的后8位,
3, 后16位,上面说的位是bit,也就是一个0或1for(int i=0;i<1000;i++){
   String s=Integer.toHexString(i);
   while(s.length()<4){
      s="0"+s;
   }
   System.out.println(s);
}

解决方案 »

  1.   

    byte[] ba=s.getBytes("BIG5");
    //把字符串按照 BIG5 编码方式 变成 byte 数组
    Integer.toHexString((int)ba[i]&0xff);
    //&0xff  用 11111111 填充高位 ,变成双字节的编码
    Integer.toHexString((int)s.charAt(i)&0xffff);
    // 用 ff 填充高位,变成双字的编码
      

  2.   

    Integer.toHexString((int)ba[i]&0xff);
    Integer.toHexString((int)s.charAt(i)&0xffff);
    与(AND)运算& 
    a&b
    只有a,b都是1的时候上述表达式的植才是1
    否则就是0
    ff:11111111
    按照上述运算标准就实现了用11111111填充高位
    填充高位的方法就是这样的
    1个字的长度是8bit,双字就是16bit
    ffff:1111111111111111
    这样用&就能实现