字符串解析时内存溢出,请神仙指点
字符串解析时内存溢出,请仙人指点!
运行红色代码时报错,内存溢出,求解决办法(base64Encoded内容大于20~30M之间).
public static byte[] Decode(string base64Encoded)
{
try
{
using (MemoryStream memoryStream = new MemoryStream())
{
base64Encoded = base64Encoded.Replace("\r\n", "");
//这是出错的代码块
byte[] inputBytes = Encoding.ASCII.GetBytes(base64Encoded);
using (FromBase64Transform transform = new FromBase64Transform(FromBase64TransformMode.DoNotIgnoreWhiteSpaces))
{
byte[] outputBytes = new byte[transform.OutputBlockSize];
..............................
..............................
..............................
..............................
------解决方案--------------------
字符串太长
可以考虑用substring先截取
然后转字节数组拼接
------解决方案--------------------
我试验200兆以上没有问题。
运行红色代码时报错,内存溢出,求解决办法(base64Encoded内容大于20~30M之间).
public static byte[] Decode(string base64Encoded)
{
try
{
using (MemoryStream memoryStream = new MemoryStream())
{
base64Encoded = base64Encoded.Replace("\r\n", "");
//这是出错的代码块
byte[] inputBytes = Encoding.ASCII.GetBytes(base64Encoded);
using (FromBase64Transform transform = new FromBase64Transform(FromBase64TransformMode.DoNotIgnoreWhiteSpaces))
{
byte[] outputBytes = new byte[transform.OutputBlockSize];
..............................
..............................
..............................
..............................
------解决方案--------------------
字符串太长
可以考虑用substring先截取
然后转字节数组拼接
------解决方案--------------------
我试验200兆以上没有问题。
static void Main(string[] args)
{
byte[] bytes1 = new byte[200 * 1024 * 1024];
new Random(0).NextBytes(bytes1);
string s = Convert.ToBase64String(bytes1);
byte[] bytes2 = Convert.FromBase64String(s); //<--
}