2013-05-13 6 views
0

Моей входной строки состоит из смеси символов Юникода эвакуационных с регулярными символами смешанной в примере:.Преобразовать спасся Юникод строка в ByteArray,

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

Как я могу преобразовать это в ByteArray или потоке?

Ожидаемый выход Byte []

//       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

+0

@ I4V Но это будет читать символ '\\' 'в качестве байта, а затем' u' в качестве байта, а затем '0' в качестве байта и т. Д. Мне нужен какой-то конвертер для чтения первых 5 символов в 1 байт. – RaGe

+0

RaGe, No '\ u0000' - это просто представление строки байта' 0'. Хотя вы приняли нижеприведенный ответ, я могу сказать, что вы ошибаетесь. (Подсказка: сравните длину строки и двоичный файл) – I4V

ответ

3

Это похоже на работу:

Encoding.UTF8.GetBytes(input); 

Вы можете попробовать его с помощью:

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

Кажется, вы можете просто бросить каждый символ в эквивалентное значение байта.

Вы не говорите, как обрабатывать символы Юникода со значением> 255, но если вы не имеете любого из этих:

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

Обратите внимание, что для конкретного примера, Encoding.UTF8.GetBytes(input) будет производить точный тот же массив байтов.

Однако вы не говорите, что хотите кодировать строку UTF8, и поскольку вы не показываете коды кода юникода выше 255, трудно точно сказать, чего вы хотите.

Смежные вопросы