PadRight() 根本没有填充

Cla*_*ire 3 c# asp.net string

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

代码:

int strlen = 4 - (data.Length % 4);
char pad = '=';
string datapad = data.PadRight(strlen, pad);
Run Code Online (Sandbox Code Playgroud)

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

eyJhbGciOiJSUzI1NiIsImtpZCI6IjY5NDZmZjNlZGUyOTk3ZWExMmVhMDRlNGFhNjYyOWRjZWVhZWZhOTAifQ
Run Code Online (Sandbox Code Playgroud)

sgb*_*gbj 6

strlen必须大于 的长度data才能填充它。正如 Grant Winney 指出的那样,PadRight获取字符串的总宽度,而不仅仅是您希望在字符串末尾重复该字符的次数。

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

int strlen = 4 - (data.Length % 4);
Run Code Online (Sandbox Code Playgroud)

所以你真的可能想要这样做:

int strlen = 4 - (data.Length % 4) + data.Length;
Run Code Online (Sandbox Code Playgroud)

要不就:

string datapad = data.PadRight(strlen + data.Length, pad);
Run Code Online (Sandbox Code Playgroud)