将Python函数转换为Objective-C?
我正在尝试解密YouTube签名参数。我发现了一些东西,但我无法理解到目前为止我发现了什么 下面是Python函数:将Python函数转换为Objective-C?,python,ios,objective-c,Python,Ios,Objective C,我正在尝试解密YouTube签名参数。我发现了一些东西,但我无法理解到目前为止我发现了什么 下面是Python函数: if len(s) == 92: return s[25] + s[3:25] + s[0] + s[26:42] + s[79] + s[43:79] + s[91] + s[80:83] elif len(s) == 90: return s[25] + s[3:25] + s[2] + s[26:40] + s[77] + s[41:77] + s[89]
if len(s) == 92:
return s[25] + s[3:25] + s[0] + s[26:42] + s[79] + s[43:79] + s[91] + s[80:83]
elif len(s) == 90:
return s[25] + s[3:25] + s[2] + s[26:40] + s[77] + s[41:77] + s[89] + s[78:81]
elif len(s) == 88:
return s[48] + s[81:67:-1] + s[82] + s[66:62:-1] + s[85] + s[61:48:-1] + s[67] + s[47:12:-1] + s[3] + s[11:3:-1] + s[2] + s[12]
elif len(s) == 87:
return s[4:23] + s[86] + s[24:85]
elif len(s) == 86:
return s[2:63] + s[82] + s[64:82] + s[63]
elif len(s) == 85:
return s[2:8] + s[0] + s[9:21] + s[65] + s[22:65] + s[84] + s[66:82] + s[21]
elif len(s) == 84:
return s[83:36:-1] + s[2] + s[35:26:-1] + s[3] + s[25:3:-1] + s[26]
elif len(s) == 83:
return s[6] + s[3:6] + s[33] + s[7:24] + s[0] + s[25:33] + s[53] + s[34:53] + s[24] + s[54:]
elif len(s) == 82:
return s[36] + s[79:67:-1] + s[81] + s[66:40:-1] + s[33] + s[39:36:-1] + s[40] + s[35] + s[0] + s[67] + s[32:0:-1] + s[34]
elif len(s) == 81:
return s[6] + s[3:6] + s[33] + s[7:24] + s[0] + s[25:33] + s[2] + s[34:53] + s[24] + s[54:81]
如何将上述Python函数转换为Objective-C函数?最优雅的方法是将if/elif改为switch/case。可能是这样的:
switch (s.length)
{
case 92:
//something something
break;
case 90:
//something something
break;
default:
break;
}
每个“回报”都必须单独管理。例如,Python数组切片意味着在字符串s[3:6]中,子字符串从第3个字母开始,到第4个字母结束。在objective-C中,您可以使用substringFromIndex:这应该很容易,但我不会完全完成您的工作,而是将在Python中解释括号是如何工作的。 如果我们假设
s
是字符串
,s[x]
返回x处的字符
s = 'some long string'
print s[3]
打印出:
e
因此,要在Objective-C中写下这一点:
NSString* s = @"some long string";
NSLog (@"%@", [s substringWithRange:NSMakeRange(3, 1)]);
在下一次尝试中,我们有s[x:y]
print s[3:7]
这将打印出:
e lo
e
为了在Objective-C中编写此代码,我们再次使用substringWithRange
方法
NSLog (@"%@", [s substringWithRange:NSMakeRange(3, 4)]);
只是我们必须小心地进行一些计算,因为NSMakeRange将长度作为参数,而不是第二个索引
对于最后一个,我们有:s[x:y:z]
print s[3:7:2]
这将打印出:
e lo
e
它只需要3中的两个字符,因此e和空格
+运算符只是连接字符串。
阅读Python中字符串的使用方法:
NSString
文档
当然,您需要将这些语句包装在switch或IF-ELSEIF子句中,以使函数的行为与Python中的相同。这里您所拥有的只是基本的字符串操作,您应该能够自己进行操作,而不是让别人代替您进行操作。谢谢您的解释,您的解释对我非常有帮助。再次感谢