C# 将Base64字符串转换为字节时发生FormatException

C# 将Base64字符串转换为字节时发生FormatException,c#,bytearray,base64,formatexception,C#,Bytearray,Base64,Formatexception,尝试将base64字符串转换为字节数组时出现异常。我将图像转换为字节数组,然后转换为base64字符串,然后对其进行加密并将其存储在文件中。然后,我尝试将base64字符串转换回MemoryStream中的字节数组,并重新创建映像。我在这里遇到一个格式异常: byte[] imgBytes = Convert.FromBase64String(str); 以下是两个主要功能的完整代码: public string ImageToString(Image img) { using (M

尝试将base64字符串转换为字节数组时出现异常。我将图像转换为字节数组,然后转换为base64字符串,然后对其进行加密并将其存储在文件中。然后,我尝试将base64字符串转换回MemoryStream中的字节数组,并重新创建映像。我在这里遇到一个格式异常:

byte[] imgBytes = Convert.FromBase64String(str);
以下是两个主要功能的完整代码:

public string ImageToString(Image img)
{
     using (MemoryStream ms = new MemoryStream())
     {
          img.Save(ms, ImageFormat.Jpeg);

          return Convert.ToBase64String(ms.ToArray());
     }
}

public Image StringToImage(String str)
{            
     int lent = str.Length;
     byte[] imgBytes = Convert.FromBase64String(str);
     MemoryStream ms = new MemoryStream(imgBytes, 0, imgBytes.Length);

     ms.Write(imgBytes, 0, imgBytes.Length);
     return Image.FromStream(ms, true);
}
下面是我试图转换的base64字符串的开始和结束。。。。
G>/9j/4AAQSkZJRgABAQEAYABgAAD。。。。Uh+8fxpT/B9KAP/2Q==


任何想法都非常感谢

问题是您的字符串在线路的某个地方损坏了。这不是base64字符串,您可以通过第二个字符
>
看到,它不出现在base64字符串中


旁注:函数创建一个包含数据的内存流,然后再次将数据写入内存流。然后尝试从内存流中读取,而不将位置重置为流的开头

只需创建内存流并从中读取:

public Image StringToImage(String str) {            
  byte[] imgBytes = Convert.FromBase64String(str);
  return Image.FromStream(new MemoryStream(imgBytes), true);
}

问题是您的字符串在行的某个地方损坏了。这不是base64字符串,您可以通过第二个字符
>
看到,它不出现在base64字符串中


旁注:函数创建一个包含数据的内存流,然后再次将数据写入内存流。然后尝试从内存流中读取,而不将位置重置为流的开头

只需创建内存流并从中读取:

public Image StringToImage(String str) {            
  byte[] imgBytes = Convert.FromBase64String(str);
  return Image.FromStream(new MemoryStream(imgBytes), true);
}

啊,好吧,我知道了。。我将base64字符串存储在一个XML样式的文件中,并对其进行了加密。在提取XML标记之间数据的代码中,我没有正确指定起始位置。它正在提取所有正确的数据,包括起始标记的最后2个字符。在本例中,“G>”是。谢谢你的帮助!啊,好吧,我知道了。。我将base64字符串存储在一个XML样式的文件中,并对其进行了加密。在提取XML标记之间数据的代码中,我没有正确指定起始位置。它正在提取所有正确的数据,包括起始标记的最后2个字符。在本例中,“G>”是。谢谢你的帮助!