Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 16進制轉中文(解決出現亂碼問題)

Android 16進制轉中文(解決出現亂碼問題)

編輯:關於Android編程

今天在項目裡面要把16進制的字符串轉換為中文,但是轉換的都是亂碼,後來又把轉換函數放在java項目裡面能夠正常轉換,一般出現亂碼第一想到的就是編碼方式,我之前一直是用的utf-8,查了資料,看見有人說utf-8沒有起作用,要用GB2312,我換了一下,果然有效。代碼如下:

package com.quickpasslibrary.utils;

import java.io.ByteArrayOutputStream;

/**
 * 進制之間的轉換
 * @author jwzhangjie
 *
 */
public class HexadecimalConver {
	
	private static String hexString="0123456789ABCDEF";
	public static String toStringHex(String s){
	  byte[] baKeyword = new byte[s.length()/2];
	  for(int i = 0; i < baKeyword.length; i++){
	   try{
	    baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
	   }catch(Exception e){
	    e.printStackTrace();
	   }
	  }
	  try{
	   s = new String(baKeyword, "GB2312");
	  }catch (Exception e1){
	   e1.printStackTrace();
	  }
	  return s;
	 }
	 
	 /**
	  * 將字符串編碼成16進制數字,適用於所有字符(包括中文)
	  */
	 public static String encode(String str){
	  //根據默認編碼獲取字節數組
	  byte[] bytes=str.getBytes();
	  StringBuilder sb=new StringBuilder(bytes.length*2);
	  //將字節數組中每個字節拆解成2位16進制整數
	  for(int i=0;i>4));
	   sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
	  }
	  return sb.toString();
	 }
	 /**
	  * 將16進制數字解碼成字符串,適用於所有字符(包括中文)
	  */
	 public static String decode(String bytes)
	 {
		  ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
		  //將每2位16進制整數組裝成一個字節
		  for(int i=0;i


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved