JAVA十六進制與字符串的轉換方法

在java程序中,十六進制與字符串是怎麼轉換的呢?下面yjbys小編就爲大家分享JAVA十六進制與字符串的轉換方法,一起來看看吧!

JAVA十六進制與字符串的轉換方法

  第一種方法:

  將指定byte數組以16進制的形式打印到控制檯

toHexString

public static String toHexString(int i)以十六進制的無符號整數形式返回一個整數參數的字符串表示形式。

如果參數爲負,那麼無符號整數值爲參數加上 232;否則等於該參數。將該值轉換爲十六進制(基數 16)的無前導 0 的 ASCII 數字字符串。如果無符號數的.大小值爲零,則用一個零字符 '0' ('u0030') 表示它;否則,無符號數大小的表示形式中的第一個字符將不是零字符。用以下字符作爲十六進制數字:

0123456789abcdef

這些字符的範圍是從 'u0030' 到 'u0039' 和從 'u0061' 到 'u0066'。如果希望得到大寫字母,可以在結果上調用 perCase() 方法:

xString(n)perCase()

參數:

i - 要轉換成字符串的整數。

返回:

用十六進制(基數 16)參數表示的無符號整數值的字符串表示形式。

// 轉化字符串爲十六進制編碼

public static String toHexString(String s)

{

String str="";

for (int i=0;i

{

int ch = (int)At(i);

String s4 = xString(ch);

str = str + s4;

}

return str;

}

// 轉化十六進制編碼爲字符串

public static String toStringHex(String s)

{

byte[] baKeyword = new byte[th()/2];

for(int i = 0; i < th; i++)

{

try

{

baKeyword[i] = (byte)(0xff & eInt(tring(i*2, i*2+2),16));

}

catch(Exception e)

{

tStackTrace();

}

}

try

{

s = new String(baKeyword, "utf-8");//UTF-16le:Not

}

catch (Exception e1)

{

tStackTrace();

}

return s;

}

// 轉化十六進制編碼爲字符串

public static String toStringHex(String s)

{

byte[] baKeyword = new byte[th()/2];

for(int i = 0; i < th; i++)

{

try

{

baKeyword[i] = (byte)(0xff & eInt(tring(i*2, i*2+2),16));

}

catch(Exception e)

{

tStackTrace();

}

}

try

{

s = new String(baKeyword, "utf-8");//UTF-16le:Not

}

catch (Exception e1)

{

tStackTrace();

}

return s;

}

public static void main(String[] args) {

tln(encode("中文"));

tln(decode(encode("中文")));

}

/*

* 16進制數字字符集

*/

private static String hexString="0123456789ABCDEF";

/*

* 將字符串編碼成16進制數字,適用於所有字符(包括中文)

*/

public static String encode(String str)

{

//根據默認編碼獲取字節數組

byte[] bytes=ytes();

StringBuilder sb=new StringBuilder(th*2);

//將字節數組中每個字節拆解成2位16進制整數

for(int i=0;i

{

nd(At((bytes[i]&0xf0)>>4));

nd(At((bytes[i]&0x0f)>>0));

}

return ring();

}

/*

* 將16進制數字解碼成字符串,適用於所有字符(包括中文)

*/

public static String decode(String bytes)

{

ByteArrayOutputStream baos=new ByteArrayOutputStream(th()/2);

//將每2位16進制整數組裝成一個字節

for(int i=0;i

e((xOf(At(i))<<4 |xOf(At(i+1))));

return new String(teArray());

}