0
我有以下的C#代码将图像转换成使用UrlTokenEncode base64编码字符串:解析C#UrlTokenEncode串用PHP
byte[] imageArray = System.IO.File.ReadAllBytes(note_path);
string base64ImageRepresentation = HttpServerUtility.UrlTokenEncode(imageArray);
byte[] data = Encoding.UTF8.GetBytes($"id={id}&apikey={apikey}&friend_ids={friend_ids}&ttl={ttl}¬e={base64ImageRepresentation}");
Console.Write(sendRequest("upload-note", data));
Console.ReadLine();
我送这个给我的灯服务器可以通过PHP解析。很明显,这是行不通的,因为UrlTokenEncode如何使用-
代替+
,_
代替/
,并且填充的整数值等于符号。我有以下代码来解决这个问题:
$request->note = str_replace('-', '+', str_replace('_', '/', $request->note));
$lastCharacter = substr($request->note, -1);
if($lastCharacter == 1 || $lastCharacter == 2){
$request->note = substr($request->note, 0, -$lastCharacter);
if($lastCharacter == 1){
$request->note = $request->note . '=';
} else {
$request->note = $request->note . '==';
}
}
我对这个过程的担心来自尾部等号。我读到只有1或2个等号用于填充,但是有没有填充的情况?如果这是可能的话,那么字符串的最后一个字符可能是任何随机的整数值是正确的?如果这是真的,那么我目前在php中解码的过程将不起作用,因为它假定最后一个字符将始终为1或2,并且该字符将表示所需等号的数量...
如果我的过程将无法正常工作,有没有更好的方法来解码ac#UrlTokenEncode字符串与PHP?