java string byte之間的轉換

2021-07-11 18:45:46 字數 1550 閱讀 4893

string s = "aaaaaaaaa;//string變數 

byte b = s.getbytes();//string轉換為byte 

string t = new string(b);//bytep轉換為string

1.string 轉 byte

byte midbytes=isostring.getbytes("utf8");

//為utf8編碼

byte isoret = srt2.getbytes("iso-8859-1");

//為iso-8859-1編碼

其中iso-8859-1為單位元組的編碼

2.byte轉string

string isostring = new string(bytes,"iso-8859-1");

string srt2=new string(midbytes,"utf-8");

說明:在網路傳輸或其它應用中常常有同一的中介軟體,假設為string型別。因此需要把其它型別的資料轉換為中介軟體的型別。

將字串進行網路傳輸時,如socket,需要將其在轉換為byte型別。這中間如果採用用不同的編碼可能會出現未成預料的問題,如亂碼。

下面舉個例子:

我們用socket傳輸string型別的資料時,常常用utf-8進行編碼,這樣比較可以避免乙個「中文亂碼」的問題。

傳送端:

string sendstring="傳送資料";

byte sendbytes= sendstring .getbytes("utf8");

.......socket傳送

接受端:

string recstring=new string( sendbytes ,"utf-8");

但是,這裡往往又會出現這樣乙個問題。就是想要傳送的資料本身就是byte型別的。

如果將其通過utf-8編碼轉換為中介軟體string型別就會出現問題

如:byte bytes = new byte ;

string sendstring=new string( bytes ,"utf-8");

byte sendbytes= sendstring .getbytes("utf8");

然後再傳送

接受時進行逆向轉換

string recstring=new string( sendbytes ,"utf-8");

byte mybytes=isostring.getbytes("utf8");

這時mybytes中的資料將是[50, 0, -17, -65, -67, 28, -17, -65, -67]

因此,需要採用單位元組的編碼方式進行轉換

string sendstring=new string( bytes ,"utf-8"); 改為 string sendstring=new string( bytes , "iso-8859-1" );

byte mybytes=isostring.getbytes("utf8"); 改為 byte mybytes=isostring.getbytes( "iso-8859-1" );

這樣所需要的位元組就有恢復了。

Java String byte陣列 字符集轉換

1,byte str.getbytes string charsetname 將str按指定的字符集charsetname解碼為字元陣列.返回用指定的字符集charsetname解碼後的字元陣列。2,string byte bytes,string charsetname 構造乙個新的string....

博學之,審問之,慎思之,明辨之,篤行之

禮記 中庸 十九章有云 博學之,審問之,慎思之,明辨之,篤行之。這說的是為學的幾個層次,或者說是幾個遞進的階段。博學之 意謂為學首先要廣泛的獵取,培養充沛而旺盛的好奇心。好奇心喪失了,為學的慾望隨之而消亡,博學遂為不可能之事。博 還意味著博大和寬容。惟有博大和寬容,才能相容幷包,使為學具有世界眼光和...

接觸之,熟悉之,打破之

接觸之,熟悉之,打破之 拿破崙小時候就是孩子王,不管同夥伴們玩什麼遊戲,它總是贏家。同時,它更善於改變遊戲規則,以便能夠發揮他自己的優勢。如果能夠成為遊戲規則的左右者,那麼,在當今商戰中必定是最大的贏家。我們處在乙個有著各種各樣遊戲規則的大環境中,每時每刻都要面對不同的遊戲規則,轉換不同的角色,讓自...