Java中byte[]、String、Hex字符串等轉(zhuǎn)換的方法
代碼如下所示:
/*輸入一個(gè)byte和byte[]合并為byte[]*/
public byte[] byteMerger(byte byte_1, byte[] byte_2) {
byte[] byte_3 = new byte[1 + byte_2.length];
byte_3[0] = byte_1;
System.arraycopy(byte_2, 0, byte_3, 1, byte_2.length);
return byte_3;
}
/*輸入一個(gè)byte[]和byte[]合并為byte[]*/
public byte[] byteMerger(byte[] byte_1, byte[] byte_2) {
byte[] byte_3 = new byte[1 + byte_2.length];
byte_3[0] = byte_1;
System.arraycopy(byte_2, 0, byte_3, byte_1.length, byte_2.length);
return byte_3;
}
/*輸入一個(gè)string(16進(jìn)制的字符hex eg:ff)輸出為16進(jìn)制的byte[],注意輸入為小寫(xiě)的hex字符串*/
public byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (charToByte(achar[pos]) << 4 | charToByte(achar[pos + 1]));
}
//System.out.println(Arrays.toString(result));
return result;
}
private byte charToByte(char c) {
//return (byte) "0123456789ABCDEF".indexOf(c);
return (byte) "0123456789abcdef".indexOf(c);
}
/*輸入10進(jìn)制數(shù)字字符串,輸出hex字符串(2位,eg: f 則輸出 0f)*/
String value= "100";
int parseInt = Integer.parseInt(value, 10);
String hexString = Integer.toHexString(parseInt);
if (hexString.length() < 2) {
hexString = '0' + hexString;
}
header = header + hexString;
}
/*輸入16進(jìn)制byte[]輸出16進(jìn)制字符串*/
public static String byteArrayToHexStr(byte[] byteArray) {
if (byteArray == null) {
return null;
}
char[] hexArray = "0123456789ABCDEF".toCharArray();
char[] hexChars = new char[byteArray.length * 2];
for (int j = 0; j < byteArray.length; j++) {
int v = byteArray[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
PS:下面看下js對(duì)url中特殊字符的轉(zhuǎn)換
let str = "http%3A%2F%2Fxxxxxxxx%2Findex.php%2Fxxxxxxx%2FMember%2Fregister%3Frecommend_id%3D11442%26id%3D87";
function replaceStr(str){
str = str.replace(/%3A/g, ":");
str = str.replace(/%2F/g, "/");
str = str.replace(/%3F/g, "?");
str = str.replace(/%3D/g, "=");
str = str.replace(/%26/g, "&");
str = str.replace(/%2B/g, "+");
str = str.replace(/%20/g, " ");
str = str.replace(/%23/g, "#");
return str;
}
console.log(replaceStr(str));
總結(jié)
以上所述是小編給大家介紹的Java中byte[]、String、Hex字符串等轉(zhuǎn)換的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot自定義注解API數(shù)據(jù)加密和簽名校驗(yàn)
這篇文章主要介紹了SpringBoot自定義注解API數(shù)據(jù)加密和簽名校驗(yàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java的Arrays.sort()方法排序算法實(shí)例分析
網(wǎng)上看過(guò)很多JDK8中Arrays.sort的底層原理,有些說(shuō)是插入排序,有些說(shuō)是歸并排序,也有說(shuō)大于域值用計(jì)數(shù)排序法,否則就使用插入排序,這種說(shuō)法到底對(duì)嗎?下面通過(guò)本文給大家分析下Java的Arrays.sort()方法到底用的什么排序算法,感興趣的朋友一起看看吧2022-02-02
springboot指定profiles啟動(dòng)失敗問(wèn)題及解決
這篇文章主要介紹了springboot指定profiles啟動(dòng)失敗問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
SpringBoot的API文檔生成工具SpringDoc使用詳解
這篇文章主要為大家介紹了SpringBoot的API文檔生成工具SpringDoc使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
java線程中synchronized和Lock區(qū)別及介紹
這篇文章主要為大家介紹了java線程中synchronized和Lock區(qū)別及介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
通過(guò)FeignClient如何獲取文件流steam?is?close問(wèn)題
這篇文章主要介紹了通過(guò)FeignClient如何獲取文件流steam?is?close問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

