2017-04-25 1025 views
-1

我打我的头靠在墙上这里,这个简单的代码是行不通的:System.FormatException:'Base-64字符数组或字符串的长度无效。'

string middle = "eyJzdWIiOiJtYXR0d2ViZXIiLCJqdGkiOiJlMWVmNjc5Mi02YTBjLTQ4YWUtYmQzNi0wZDlmMTVlMDFiY2UiLCJpYXQiOjE0OTMwOTI0OTQsIm5iZiI6MTQ5MzA5MjQ5NCwiZXhwIjoxNDkzMjY1Mjk0LCJpc3MiOiJFQ29tbVdlYkFQSTIiLCJhdWQiOiJFQ29tbVdlYkNsaWVudDIifQ" 

byte[] newBytes = Convert.FromBase64String(middle); 
middle = Encoding.UTF8.GetString(newBytes); 

就这么简单!但是我在标题中看到了错误。

此外,我在https://www.base64decode.org/上运行这个,它解码完美。

+1

就拿这个http://stackoverflow.com/questions/2925729/invalid-length-for-a-base-64-char-array –

回答

3

由于您提供的字符串不完全符合FromBase64String方法接受的值的标准,因此您需要添加结束符号以遵循约定。它不会自动添加结束符号到您的string

无价值字符“=”用于结尾填充。 s的结尾可以包含零个,一个或两个填充字符。

Source.

要解决问题,您有添加"=="string结束。

例如:string middle = "SomeString=="

+0

谢谢大家一起来看看!显然,抛弃Base64编码字符串的黑盒子正在删除填充。我只是一次加了一个'=',然后重试。成功! – crackedcornjimmy

相关问题