汉字字符串转换成十六进制byte数组,一个汉字存到两个byte里面,大整数存到两个byte里面


package com.zdz8207.test;


/**
 * 汉字字符串转换成十六进制byte数组,一个汉字存到两个byte里面
,大整数存到两个byte里面
 *  @author  zhengdunzhuang
 *
 
*/
public  class ChineseCharacterStringToByteArray {

     public  static  void main(String[] args) {
        
         byte[] data =  new  byte[42];
        data[0] = ( byte) 0x04;
        data[1] = ( byte) (42);
        
        printHexString(data);
        System.out.println("");
        
        String msg = "你已成功添加李先生为好友";
        data = toHexByteByStrings(data,3,msg);
        printHexString(data);

/*
 * 用工具转换需要的结果:
你已成功添加李先生为好友
{0x4f60,0x5df2,0x6210,0x529f,0x6dfb,0x52a0,0x674e,0x5148,0x751f,0x4e3a,0x597d,0x5 3cb,0x0};

打印输出结果:
042A00000000000000000000000000000000000000000000000000000000000000000000000000000000
042A4F605DF26210529F6DFB52A0674E5148751F4E3A597D53CB00000000000000000000000000000000
4F60
 
*/
        
         int i = 20320; // 0x4f60
         byte[] b = intToByteArray(i);
        System.out.println("");
        printHexString(b);
    }
    
     // 整数转换成byte数组
     public  static  byte[] intToByteArray( int i) {   
           byte[] result =  new  byte[2];
          result[0] = ( byte) ((i & 0xFF00) >> 8 );
          result[1] = ( byte) ( i & 0xFF);
           return result;
    }
        
    /**
* 转化汉字字符串为十六进制编码并放到byte数组里面,一个字符两个byte字节
* @param data byte数组
* @param start 要追加的开始个数,从1算起,如从byte[3]开始 则start=4
* @param s 要转换的字符串
* @return
*/
     public  static   byte[] toHexByteByStrings( byte[] data, int start,String s) {
         int j = start;
         for ( int i = 0; i < s.length(); i++) {
             int ch = ( int) s.charAt(i);
            data[j-1] = ( byte) ((ch & 0xFF00) >> 8 );
            data[j] = ( byte) ( ch & 0xFF);
            j += 2;
        }
         return data;
    }
    
     //  转化字符串为十六进制编码字符串
     public  static String toHexByStrings(String s) {
        String str = "";
         for ( int i = 0; i < s.length(); i++) {
             int ch = ( int) s.charAt(i);
            String s4 = Integer.toHexString(ch);
            str = str + s4;
        }
         return str; //  0x表示十六进制
    }
    
     // 打印十六进制字符串
     public  static  void printHexString( byte[] b) {
         for ( int i = 0; i < b.length; i++) {
            String hex = Integer.toHexString(b[i] & 0xFF);
             if (hex.length() == 1) {
                hex = '0' + hex;
            }
            System.out.print(hex.toUpperCase());
        }
    }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM