你是否跟我一樣,在一些需要加密的**裡看見需要把字串轉換為位元組的場景,例如md5加密。而你每次看到像我以前一樣,自動地略過(反正別人都寫好了,我用就是了)。如果是的話,不要再逃避了,下面跟我一起來了解一下字串與byte之間轉換的原理
是的,原理就這麼簡單,接下來用**實現:
法1 思路:先把byte 轉換維char,再把char 轉換為字串
public
static string bytes2hex(byte src)
char res = new
char[src.length * 2]; // 每個byte對應兩個字元
final
char hexdigits = ;
for (int i = 0, j = 0; i < src.length; i++)
return
new string(res);
}
法2
思路:先把byte轉換為int型別,再轉換為字串
public
static string bytestohex(byte src)
stringbuilder stringbuilder = new stringbuilder("");
for (int i = 0; i < src.length; i++)
}
return stringbuilder.tostring();
}
思路:先把字串轉換為char,再轉換為byte
public
static
byte hextobytes(string hexstring)
int length = hexstring.length() / 2;
char hexchars = hexstring.tochararray();
byte bytes = new
byte[length];
string hexdigits = "0123456789abcdef";
for (int i = 0; i < length; i++)
bytes[i] = (byte) (h | l);
}
return bytes;
}
注:注1得到***x0000,注2得到0000***x,相或就把兩個字元轉換為乙個byte了。
md5加密
public
static string ge***5byfile(file file)
ret = bytes2hex(md.digest()); // 把md5加密後的byte轉換為字串
} catch (exception e) finally catch (ioexception e) }}
return ret;
}
好了,應該懂了吧,其實並不難的。上面的是我個人的理解,難免有錯。若有錯,歡迎指正。
如果這篇文章對你有幫助的話,不妨點個頂唄~
字串與byte 之間的轉換
同乙個字元在不同的編碼下會被編成不同長度的編碼,比如 acsii,每個字元對應乙個位元組,實際上只使用了7位,從00h 7fh。只能表達128個字元。gb2312,中文的一種編碼,每個字元使用兩個位元組表示。utf 8,可以表達所有unicode字元,每個字元可以用1 3個位元組表示。utf 16,...
Java中字串和byte陣列之間的相互轉換
1 將字元轉換成byte陣列 string str 羅長 byte sb str.getbytes 2 將byte陣列轉換成字元 byte b string str new string b 3 為了方便字元的加減操作,通常以16進製制字元替代普通字元與byte陣列進行相互轉換 16進製制的字串表示...
Java字串與陣列,字串與整型之間的相互轉換
tochararray 方法 語法 public char tochararray 例項 split 和split 方法 語法 public string split string regex,int limit 引數 regex 正規表示式分隔符。limit 分割的份數。例項 valueof 方法...