Проблема с XML, включающая байтовый массив - PullRequest
1 голос
/ 26 января 2011

привет, я использую форму разбора сообщения, в которой я записываю поля в буферизованный поток, а затем извлекаю представление байтового массива этого потока

MyMessage _message = new MyMessage("me","you",MessageType.peer_message,4252422) ;
// in the constructor String sender,String receiver,MessageType(enumaraition) m_type,Int32 id 

byte [] buffer = myEncoder.encode(message) ;

теперь, когда я передаю это в myDecoder, оно декодирует егов том же метре и прекрасно работает!как я это делаю не проблема

моя проблема в том, что в некоторых случаях неправильной связи мне нужно хранить массив byte [] (буфер) для дальнейшего использования, и я пытаюсь сделать это в xmlDocumantпод тэгом ЗДЕСЬ ВНУТРЕННИЙ ТЕКСТ, ГДЕ Я ХОЧУ СОХРАНИТЬ, ЧТО МАТРИЙ БАЙТОВ

я попробовал -> utf8Encoding.Ascii.getString(buffer), что сохраняет какое-то представление, но оно меняет значения поля, которые не являются строками... когда я вытащил его с помощью

utf8Encoding.Ascii.getBytes(packet_node.innerText) ; 

1) ВОПРОС - КАК БЫ ВЫ ХОТИТЕ СОХРАНЕНИЕ ЭТОГО БАЙТА В XMLNODE 2) Я также попытался просто записать поля одно за другим вкаждый тег

 <Packet>
      <sender>me</sender>
      <receiver>him</receiver>
      <MessageType> ..?? how would  i represent a byte as a string ? </MessageType> 
      <Id> 4252353523 </Id> here i have no problem but i still would have to always prase the value back and forth in other uses from int to string ..

</Packet> 

3) поэтому я пришел к выводу о сериализации байтового массива в xmldocument ... просто я не хочу, чтобы это был документ, а только один узел в существующем документе

1 Ответ

4 голосов
/ 26 января 2011

Кодируйте его как строку base-64.Просто не забудьте декодировать его, когда будете читать обратно.

byte[] bytes = ...;
string encoded = Convert.ToBase64String(bytes);
byte[] decoded = Convert.FromBase64String(encoded);
...