Java 字串與byte之間的相互轉換

2021-08-11 00:26:58 字數 1580 閱讀 7361

你是否跟我一樣,在一些需要加密的**裡看見需要把字串轉換為位元組的場景,例如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 方法...