2013-08-19 27 views
0

我想在C#中使用String.PadRight方法,但它只是沒有對字符串做任何事情。PadRight()根本不是填充

代碼:

int strlen = 4 - (data.Length % 4); 
char pad = '='; 
string datapad = data.PadRight(strlen, pad); 

字符串中的問題是Base64編碼的數據,我需要「=」末墊它ConvertFromBase64正常工作。

eyJhbGciOiJSUzI1NiIsImtpZCI6IjY5NDZmZjNlZGUyOTk3ZWExMmVhMDRlNGFhNjYyOWRjZWVhZWZhOTAifQ 
+1

的strlen必須比數據的長度更大,以便爲它填充它。你試過指定'data.Length + strlen'嗎? – sgbj

+1

好的。您應該將其作爲答案發布。 [參考](http://msdn.microsoft.com/en-us/library/36f2hz3a.aspx) –

回答

3

strlen必須按順序比的data長度長爲它墊它。正如格蘭特溫尼指出的那樣,PadRight取得了字符串的總寬度,而不僅僅是你想在其結尾處重複該字符的次數。

在下面的代碼中,strlen將始終小於或等於4,這比您的基本64編碼字符串的長度小得多。

int strlen = 4 - (data.Length % 4); 

所以真的,你可能會想這樣做,而不是:

int strlen = 4 - (data.Length % 4) + data.Length; 

或者只是:

string datapad = data.PadRight(strlen + data.Length, pad); 
+0

是的 - 我剛剛在回到這篇文章之前就明白了。我正在閱讀MSDN上的文檔太快。哎呦! – ClairelyClaire