3

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

代码:

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

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

eyJhbGciOiJSUzI1NiIsImtpZCI6IjY5NDZmZjNlZGUyOTk3ZWExMmVhMDRlNGFhNjYyOWRjZWVhZWZhOTAifQ
4

1 回答 1

6

strlen必须大于的长度data才能填充它。正如格兰特温尼指出的那样,PadRight采用字符串的总宽度,而不仅仅是您希望在其末尾重复该字符的次数。

在下面的代码中,strlen将始终小于或等于 4,这比您的 base 64 编码字符串的长度要小很多。

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

所以实际上你可能想要这样做:

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

要不就:

string datapad = data.PadRight(strlen + data.Length, pad);
于 2013-08-19T01:59:46.090 回答