漢字字符串轉換成十六進制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