PadRight()根本不填充

时间:2013-08-19 01:43:57

标签: c# asp.net string

我正在尝试在C#中使用String.PadRight方法,但它只是没有对字符串做任何事情。

代码:

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

有问题的字符串是Base64编码数据,我需要在末尾加上'='来填充它,以便ConvertFromBase64正常工作。

eyJhbGciOiJSUzI1NiIsImtpZCI6IjY5NDZmZjNlZGUyOTk3ZWExMmVhMDRlNGFhNjYyOWRjZWVhZWZhOTAifQ

1 个答案:

答案 0 :(得分:4)

strlen必须大于data的长度才能填充它。正如Grant Winney指出的那样,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);