PadRight()根本没有进行填充

4
我可以帮助你进行翻译。以下是您需要翻译的内容,涉及到 IT 技术方面。

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

代码:

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

这个字符串是Base64编码的数据,我需要在结尾加上'='来填充它,以便ConvertFromBase64能够正常工作。

eyJhbGciOiJSUzI1NiIsImtpZCI6IjY5NDZmZjNlZGUyOTk3ZWExMmVhMDRlNGFhNjYyOWRjZWVhZWZhOTAifQ

2
strlen必须大于数据长度才能填充它。您是否尝试指定data.Length + strlen - sgbj
1个回答

8
strlen必须大于data的长度才能进行填充。正如Grant Winney所指出的那样,PadRight需要字符串的总宽度,而不仅仅是您想要在其末尾重复该字符的次数。

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

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

所以,实际上你可能希望这样做:
int strlen = 4 - (data.Length % 4) + data.Length;

或者只需:
string datapad = data.PadRight(strlen + data.Length, pad);

1
是的 - 我就在回到这篇文章之前才弄清楚。我阅读 MSDN 文档时太快了。糟糕! - CXL
假设的痛苦!!!感谢@sgbj - D_Edet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接