2013-05-13 99 views
0

我的輸入字符串包含的Unicode轉義字符與常規字符例混合的混合物:轉換逃脫unicode字符串到字節組

String input ="\u0000\u0003\u0000\u0013timestamp\u0011clientId\u0015timeToLive\u0017destination\u000fheaders\tbody\u0013messageId\u0001\u0006" 

我如何轉換這個轉換爲bytearray或流?

預期輸出字節[]

//       t  i  m  e  s  t  a  m  p 
{0x00, 0x03, 0x00, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x11, ...} 
+0

要獲得字節數組,你並不需要閱讀您的文件爲文本。只需使用'File.Open'和'Read'。 – I4V 2013-05-13 21:07:48

+0

@ I4V但是,這會讀取字符'\\''作爲一個字節,然後'u'爲一個字節,然後'0'爲一個字節等我需要某種形式的轉換器爲1個字節讀取前5個字符。 – RaGe 2013-05-14 13:01:36

+0

憤怒,沒有'\ u0000'只是字節的'0'串represantation。雖然你接受了下面的答案,我可以說,你是在錯誤的軌道上。 (提示:比較字符串的長度和二進制文件) – I4V 2013-05-14 17:14:53

回答

3

這似乎工作:

Encoding.UTF8.GetBytes(input); 

您可以通過嘗試:

Text = BitConverter.ToString(Encoding.UTF8.GetBytes(input)); 
0

看來你可以簡單的每個字符轉換爲它的等效字節的值。

你不說如何處理Unicode字符值> 255,但假設你沒有任何的那些:

input.Select(c => (byte)c).ToArray(); 

注意你的具體的例子,Encoding.UTF8.GetBytes(input)會產生精確的相同的字節數組。

但是,你不是說你想要的字符串UTF8編碼,因爲你沒有表現出高於255 Unicode代碼點,這是很難說正是你想要的。