我正在尝试在C#中使用String.PadRight方法,但它只是没有对字符串做任何事情。
代码:
int strlen = 4 - (data.Length % 4);
char pad = '=';
string datapad = data.PadRight(strlen, pad);
有问题的字符串是Base64编码数据,我需要在末尾加上'='来填充它,以便ConvertFromBase64正常工作。
eyJhbGciOiJSUzI1NiIsImtpZCI6IjY5NDZmZjNlZGUyOTk3ZWExMmVhMDRlNGFhNjYyOWRjZWVhZWZhOTAifQ
答案 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);