-1
ためbase64EncodeInvalid長でエラーが発生しました私は、次のC#コードを使用することによって、いくつかの文字列をデコードします:ベース64 char配列や文字列
public static string deCodeStdXML(string encodeXML)
{
string str2;
try
{
byte[] data = System.Convert.FromBase64String(encodeXML);
str2 = System.Text.ASCIIEncoding.ASCII.GetString(data);
}
catch (Exception exception)
{
throw new Exception("Error in base64Encode" + exception.Message);
}
return str2;
}
が、私は長い文字列でそれをテストするとき、それは動作しません、以下を参照:
string encodeXML = @"H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Il5mdbvM6/SLvGmyizx9lU/z4jKf/czLYpWXxTL/md/7i+f64ZNs8abOpm+L5cXPPH69+HKVL39yL323KJfNo3fN7LOP5m27enT37tXV1fjq3riqL";
string result = deCodeStdXML(encodeXML);
Console.WriteLine(result);
それが例外をスロー:
System.Exception was unhandled
HResult=-2146233088
Message=Error in base64EncodeInvalid length for a Base-64 char array or string.
Source=HarnessDBLayer
StackTrace:
at HarnessDBLayer.DBHelper.deCodeStdXML(String encodeXML) in c:\Users\zhanzhex\Documents\Visual Studio 2012\Projects\XMLValidation\HarnessDBLayer\DBLayer.cs:line 602
at ConsoleApplication1.Program.TEST_deCodeStdXML() in c:\Users\zhanzhex\Documents\Visual Studio 2012\Projects\XMLValidation\ConsoleApplication1\Program.cs:line 43
at ConsoleApplication1.Program.Main(String[] args) in c:\Users\zhanzhex\Documents\Visual Studio 2012\Projects\XMLValidation\ConsoleApplication1\Program.cs:line 22
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
誰がどのようにこの問題を解決するために私を伝えることができますか?
これは、有効なbase64文字列ではありません。それは257文字です。それは有効なbase64になるためには詰め物が必要です...あなたはどこから始めましたか?さて、あなたのtry/catchブロックは無意味なものより悪いです - それは有用であろうスタックトレースを削除しています。ちょうどそれを取り除き、あなたの方法を2行の方法に変えてください... –