C# - 存储为Base64的字符串,但是已检索的字符串不是有效的base64字符串

时间:2017-08-15 09:57:02

标签: c# base64

我正在使用Base64编码将数据结构中的值存储到字符串中。 基本上我所做的是将字节数组转换为base64字符串

string StoredData = Convert.ToBase64String(ByteArray); 

然后我将StoredData分成最大长度为256个字符的字符串,并将它们存储为ASCII字符串(在AutoCAD XData中作为DxfCode.ExtendedDataAsciiString)。

当我想要检索我的数据时,我会执行以下操作:

首先,我使用StoredData = sting1 + string2 + ...组合每个256长字符串 然后我使用

将StoredData转换回ByteArray
var ByteArray = Convert.FromBase64String(StoredData);

现在这对我和我的客户来说非常有用,直到一个月前,我的一位客户遇到了一些崩溃和错误。 我让他把存储的数据发给我,我惊讶地发现他的数据包含无效的Base64字符(见下面的示例)

  

tM7x24QLLLALr5ivAx3XFAM7uciYXrCjKXSFd3XOL / KGIc3C + JMO8QjHT / 4C + puYrNLq5r9Is0vpDKyuxw9I6R3f1LuOYSdHS6XgZJEyMvGwSHNRSYJ / a0IoumQftB3XspQRwp4QSd7qcUVsrXw0 + 2RS / sd2vAvUFxEQgwsHaabb01YjchGeyxr1f78A4qy2BL / oHAsRak9UYN0mDzhZgbhpahlgdK3eWd8b2BTM01lWh74pYUrJR + JfQ0tw0Eu㿔

     

Z / 1JxBMUv2cB6NrFehSuNF9l4dhAaZQ + TcIClZmk / ZC8TJ0rKka / J + HqhLDAwWExB3nXoIi00uJnE7J4R6rU + Q ==

你可以看到前256个长字符串的Base64字符无效(㿔)

为什么会这样?这可能与用户计算机有关吗?我试图复制这个错误没有任何成功,因为我无法访问他们的计算机,我开始认为它可能是他们的一面。

该应用程序使用.Net framework 4.5版。

编辑:结果发现客户端已经发送了一个已恢复的文档,该文档没有正确恢复文本字符串,这解释了损坏的字符串。

1 个答案:

答案 0 :(得分:0)

事实证明应用程序崩溃了,客户端已经使用损坏的字符串恢复了绘图文档。