我試圖將字節[]轉換爲字符串,並使用Encoding.Unicode進行轉換。 有時Encoding.Unicode能夠將byte []轉換爲字符串,有時輸出是!=輸入。 我在做什麼錯?將字節[]轉換爲字符串並返回c#
感謝您的幫助。
public static void Main(string[] args)
{
Random rnd = new Random();
while(true)
{
Int32 random = rnd.Next(10, 20);
Byte[] inBytes = new Byte[random];
for(int i = 0; i < random; i++)
inBytes[i] = (Byte)rnd.Next(0, 9);
String inBytesString = Encoding.Unicode.GetString(inBytes, 0, inBytes.Length);
Byte[] outBytes = Encoding.Unicode.GetBytes(inBytesString);
if(inBytes.Length != outBytes.Length)
throw new Exception("?");
else
{
for(int i = 0; i < inBytes.Length; i++)
{
if(inBytes[i] != outBytes[i])
throw new Exception("?");
}
}
Console.WriteLine("OK");
}
}
嗯,輸出一些隨機字節數組不會是有效的Unicode,所以,有時這是不行的。如果你從一個隨機字符串開始,並通過一個字節數組往返,那麼它每次都會工作。 – Jodrell
[絕對最低限度每個軟件開發人員絕對,肯定必須知道Unicode和字符集(沒有藉口!)](http://www.joelonsoftware.com/articles/Unicode.html) –