【问题标题】:C# convert bytes of serialized object to stringC#将序列化对象的字节转换为字符串
【发布时间】:2016-10-17 09:23:25
【问题描述】:

我现在有一个问题,我不知道如何解决。

技术进步是从 TCPClient 向 TCPServer 发送字节。 发送的消息如:1-[BYTES-OF-SERIALIZED-OBJECT] 现在我必须将这些字节(从字节数组)转换为字符串以使用正则表达式。

有没有人想办法解决这个问题?因为当我将字节数组转换为字符串时,没有编码可以解码。 也许我必须将方括号中的序列化字节转换为不同的东西,然后再将其转换回来?有什么想法吗?

【问题讨论】:

  • 您可能会寻找:Encoding.UTF8.GetString()
  • 正如我所写,没有编码工作。当我尝试并在 MessageBox 中显示完整消息时,我只得到“1-[”并且字节丢失。
  • 所以,您正在尝试正则表达式非 asc-ii 数据。我google了一下,第一个建议:social.msdn.microsoft.com/Forums/vstudio/en-US/…
  • 我想你不明白我的问题。我对正则表达式没有问题
  • 我认为您必须删除 '1-[' 和右方括号。但是你不知道字节是什么类型的数据。您有示例消息吗?

标签: c# regex serialization tcp deserialization


【解决方案1】:

解决方案是将对象序列化为 base64 编码字符串。现在发送的消息例如:(1)[BASE64STRING-OF-SERIALIZED-OBJECT]。 现在我可以使用正则表达式,而不必再次格式化 base64 字符串。

【讨论】:

  • 这很可能是因为数据包含一个空字符(一个值为 0 的字节)。空字符通常表示字符串结束,这会导致大多数控件在该点之后停止呈现文本。发送并非总是文本的字符串时,应始终使用 Base64。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 2014-04-07
  • 2018-12-08
  • 2013-02-13
相关资源
最近更新 更多