Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含字节数组的xml问题_C#_Xml Serialization - Fatal编程技术网

C# 包含字节数组的xml问题

C# 包含字节数组的xml问题,c#,xml-serialization,C#,Xml Serialization,您好,我使用了一种消息解析形式,在这种形式中,我将字段写入缓冲流,然后提取该流的字节数组重复 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 = myEncode

您好,我使用了一种消息解析形式,在这种形式中,我将字段写入缓冲流,然后提取该流的字节数组重复

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) ;
现在,当我把它传给我的解码器时,它会以同样的方式解码,效果非常好! 我怎么做不是问题

我的问题是,在某些通信错误的情况下,我需要存储byte[]数组缓冲区以供进一步使用,我正在尝试在标记下的xmldocumat中这样做 这里的内部文本是我想保存字节数组的地方

我尝试过-> utf8Encoding.Ascii.getStringbuffer,用于保存某种类型的RepsantItation 但它会改变字段的值,而不是字符串。。。当我使用

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。。只是我不希望它是一个文档,而是现有文档中的一个节点

将其编码为base-64字符串。只要记住在你读回它的时候解码它

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

将其编码为base-64字符串。只要记住在你读回它的时候解码它

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

扩展。。。并非所有字节流都包含有效的UTF-8编码。您说它更改的值不是字符串,但您要求它将整个缓冲区视为单个UTF-8编码字符串。如果要通过调用new System.Text.UTF8Encodingfalse、true创建编码器,然后在该编码器上调用GetBytes方法,则可能会出现异常,因为如果字节数组不是有效的UTF8编码,则第二个参数会导致其抛出。若要展开。。。并非所有字节流都包含有效的UTF-8编码。您说它更改的值不是字符串,但您要求它将整个缓冲区视为单个UTF-8编码字符串。如果要通过调用new System.Text.UTF8Encodingfalse、true创建编码器,然后在该编码器上调用GetBytes方法,则可能会出现异常,因为如果字节数组不是有效的UTF8编码,则第二个参数会导致其抛出;关于原因的信息:Jeff M有它的真实性,建议使用base-64;有关原因的信息: