2013-05-13 97 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代码点,这是很难说正是你想要的。