2017-04-25 1098 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

相關問題