2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
string str1 = "dsfadfasdfasdfasdfasdfasdfasdfasdf";
string str2 = "";
byte[] byt = new byte[100];
byt = Encoding.Unicode.GetBytes(str1);
str2 = Encoding.Unicode.GetString(byt).Substring(0, byt.Length);
Console.Write(str2);
Console.ReadLine();
上邊是我假設(shè)的,此時(shí)假設(shè) str1為 "dsfadfasdfasdfasdfasdfasdfasdfasdf"
雖然你定義了 byte[] byt = new byte[100];
但是GetBytes在生成字節(jié)序列的時(shí)候,填充了數(shù)組的前68個(gè),后邊的都是空的,
這樣解碼為str2的時(shí)候他的dsfadfasdfasdfasdfasdfasdfasdfasdf的長度還是原來的長度,但是你的byt.Length是100,這樣就造成了越界了,肯定會報(bào)錯的 ,
建議你數(shù)組可以使用arraylist可變長數(shù)組,

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
byt的長度是str1轉(zhuǎn)換字節(jié)后的長度,并不是str1的長度,所以可能會引起越界
起始位置和長度要根據(jù)str1.length來斟酌
添加回答
舉報(bào)