?
筆者前幾日在開服過程中需要將字符串轉(zhuǎn)化成為16進制的字符串,在網(wǎng)上找到了一些方法嘗試之后,均發(fā)現(xiàn)存在一個問題-->字符串轉(zhuǎn)為16進制后再轉(zhuǎn)回來,英文正常,中文出現(xiàn)亂碼
筆者前幾日在開服過程中需要將字符串轉(zhuǎn)化成為16進制的字符串,在網(wǎng)上找到了一些方法嘗試之后,均發(fā)現(xiàn)存在一個問題-->字符串轉(zhuǎn)為16進制后再轉(zhuǎn)回來,英文正常,中文出現(xiàn)亂碼
經(jīng)過考慮決定通過以下方式進行解決:
1)在將字符串轉(zhuǎn)為16進制之前先進行一次轉(zhuǎn)化,先將其轉(zhuǎn)化成為Unicode編碼(相當于把中文用英文字符代替),在轉(zhuǎn)化成為16進制
2)相反的,在十六進制轉(zhuǎn)換為字符串后的得到的是Unicode編碼,此時再將Unicode編碼解碼即可獲取原始字符串
代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
*字符串轉(zhuǎn)為16進制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
*16進制轉(zhuǎn)為字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
*Unicode轉(zhuǎn)為字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
此方法雖然解決了轉(zhuǎn)化過程中中文亂碼的問題,但是過于復雜,筆者后來又發(fā)現(xiàn)一種新的轉(zhuǎn)化方式,可直接轉(zhuǎn)化,中文不亂碼,
代碼如下:
*字符串轉(zhuǎn)16進制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
*16進制轉(zhuǎn)為字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
下面是補充
java字符串和十六進制字符串互轉(zhuǎn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
toHexString
public static String toHexString(int i)以十六進制的無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。
如果參數(shù)為負,那么無符號整數(shù)值為參數(shù)加上 232;否則等于該參數(shù)。將該值轉(zhuǎn)換為十六進制(基數(shù) 16)的無前導 0 的 ASCII 數(shù)字字符串。如果無符號數(shù)的大小值為零,則用一個零字符 '0' ('\u0030') 表示它;否則,無符號數(shù)大小的表示形式中的第一個字符將不是零字符。用以下字符作為十六進制數(shù)字:
0123456789abcdef
這些字符的范圍是從 '\u0030' 到 '\u0039' 和從 '\u0061' 到 '\u0066'。如果希望得到大寫字母,可以在結果上調(diào)用 String.toUpperCase() 方法:
Integer.toHexString(n).toUpperCase()
參數(shù):
i - 要轉(zhuǎn)換成字符串的整數(shù)。
返回:
用十六進制(基數(shù) 16)參數(shù)表示的無符號整數(shù)值的字符串表示形式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
|
第二種方法:
將指定byte數(shù)組以16進制的形式打印到控制臺
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
|
以上就是JAVA 十六進制與字符串的轉(zhuǎn)換的詳細內(nèi)容,希望可以幫到你。文章來源:http://www.zghlxwxcb.cn/news/detail-731215.html
轉(zhuǎn)自:微點閱讀? ?https://www.weidianyuedu.com文章來源地址http://www.zghlxwxcb.cn/news/detail-731215.html
到了這里,關于JAVA 十六進制與字符串的轉(zhuǎn)換淺談的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!