Перевожу с php:
function shr32($x, $bits)
{
if($bits <= 0){
return $x;
}
if($bits >= 32){
return 0;
}
$bin = decbin($x);
$l = strlen($bin);
if($l > 32){
$bin = substr($bin, $l - 32, 32);
}elseif($l < 32){
$bin = str_pad($bin, 32, '0', STR_PAD_LEFT);
}
return bindec(str_pad(substr($bin, 0, 32 - $bits), 32, '0', STR_PAD_LEFT));
}
function charCodeAt($str, $index)
{
$char = mb_substr($str, $index, 1, 'UTF-8');
if (mb_check_encoding($char, 'UTF-8'))
{
$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');
return hexdec(bin2hex($ret));
}
else
{
return null;
}
}
function mb_str_split($str, $length = 1)
{
if ($length < 1) return false;
$result = array();
for ($i = 0; $i < mb_strlen($str); $i += $length) {
$result[] = mb_substr($str, $i, $length);
}
return $result;
}
function RL($a, $b)
{
for($c = 0; $c < strlen($b) - 2; $c +=3) {
$d = $b{$c+2};
$d = $d >= 'a' ? charCodeAt($d,0) - 87 : intval($d);
$d = $b{$c+1} == '+' ? shr32($a, $d) : $a << $d;
$a = $b{$c} == '+' ? ($a + $d & 4294967295) : $a ^ $d;
}
return $a;
}
function TKK()
{
$a = 561666268;
$b = 1526272306;
return 406398 . '.' . ($a + $b);
}
function TL($a)
{
$tkk = explode('.', TKK());
$b = $tkk[0];
for($d = array(), $e = 0, $f = 0; $f < mb_strlen ( $a, 'UTF-8' ); $f ++) {
$g = charCodeAt ( $a, $f );
if (128 > $g) {
$d [$e ++] = $g;
} else {
if (2048 > $g) {
$d [$e ++] = $g >> 6 | 192;
} else {
if (55296 == ($g & 64512) && $f + 1 < mb_strlen ( $a, 'UTF-8' ) && 56320 == (charCodeAt ( $a, $f + 1 ) & 64512)) {
$g = 65536 + (($g & 1023) << 10) + (charCodeAt ( $a, ++ $f ) & 1023);
$d [$e ++] = $g >> 18 | 240;
$d [$e ++] = $g >> 12 & 63 | 128;
} else {
$d [$e ++] = $g >> 12 | 224;
$d [$e ++] = $g >> 6 & 63 | 128;
}
}
$d [$e ++] = $g & 63 | 128;
}
}
$a = $b;
for($e = 0; $e < count ( $d ); $e ++) {
$a += $d [$e];
$a = RL ( $a, '+-a^+6' );
}
$a = RL ( $a, "+-3^+b+-f" );
$a ^= $tkk[1];
if (0 > $a) {
$a = ($a & 2147483647) + 2147483648;
}
$a = fmod ( $a, pow ( 10, 6 ) );
return $a . "." . ($a ^ $b);
}
$r = TL("test");
private static string TKK()
{
long a = 561666268;
long b = 1526272306;
return "406398." + (a + b);
}
private int charCodeAt(string str, int index)
{
string chr = "" + str[index];
byte[] bytes = Encoding.GetEncoding(12001).GetBytes(chr);
chr = Encoding.GetEncoding(12001).GetString(bytes);
return (int)chr[0];
}
private string str_pad(string to, int n, string what)
{
for (var i = to.Length; to.Length < n; i++)
to = what + to;
return to;
}
private long shr32(long x, int bits)
{
if (bits <= 0)
{
return x;
}
if (bits >= 32)
{
return 0;
}
var bin = Convert.ToString(x, 2);
var l = bin.Length;
if (l > 32)
{
bin = bin.Substring(l - 32, 32);
}
else if(l < 32)
{
bin = str_pad(bin, 32, "0");
}
return Convert.ToInt64(str_pad(bin.Substring(0, 32 - bits), 32, "0"), 2);
}
private string RL(string a, string b)
{
for (var c = 0; c < b.Length - 2; c += 3)
{
long d = b[c + 2];
d = (d >= 'a' ? charCodeAt(d+"", 0) - 87 : Convert.ToInt32(d));
d = (b[c + 1] == '+' ? shr32(Convert.ToInt64(a), Convert.ToInt32(d)) : Convert.ToInt64(a) << Convert.ToInt32(d));
a = Convert.ToString(b[c] == '+' ? (Convert.ToInt64(a) + Convert.ToInt64(d) & 4294967295) : Convert.ToInt64(a) ^ Convert.ToInt64(d));
}
return a;
}
private string TL(string a)
{
var tkk = TKK().Split('.');
var b = tkk[0];
int[] d = new int[1];
var e = 0;
for (var f = 0; f < a.Length; f++)
{
var g = charCodeAt( a, f);
if (128 > g)
{
if (e == d.Length)
Array.Resize(ref d, d.Length + 1);
d[e++] = g;
}
else
{
if (2048 > g)
{
if (e == d.Length)
Array.Resize(ref d, d.Length + 1);
d[e++] = g >> 6 | 192;
}
else
{
if (55296 == (g & 64512) && f + 1 < a.Length && 56320 == (charCodeAt( a, f + 1) & 64512))
{
g = 65536 + ((g & 1023) << 10) +(charCodeAt( a, ++f) & 1023);
if (e == d.Length)
Array.Resize(ref d, d.Length + 1);
d[e++] = g >> 18 | 240;
d[e++] = g >> 12 & 63 | 128;
}
else
{
if (e == d.Length)
Array.Resize(ref d, d.Length + 1);
d[e++] = g >> 12 | 224;
d[e++] = g >> 6 & 63 | 128;
}
}
if (e == d.Length)
Array.Resize(ref d, d.Length + 1);
d[e++] = g & 63 | 128;
}
}
a = b;
for (e = 0; e < d.Length; e++)
{
a += d[e];
a = RL( a, "+-a^+6");
}
a = RL( a, "+-3^+b+-f");
a = Convert.ToString(Convert.ToInt64(a) ^ Convert.ToInt64(tkk[1]));
if (0 > Convert.ToInt64(a))
{
a = Convert.ToString((Convert.ToInt64(a) & 2147483647) +2147483648);
}
a = Convert.ToString(Convert.ToInt64(a) % Math.Pow(10, 6));
return a+"."+(Convert.ToInt64(a) ^ Convert.ToInt64(b));
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В классе установщике хочу считать из ресурсов файл и записать его на диск, но класс Application не подключается, хотя я даже библиотеку подсоединял...
с pypdf делаю конвертацию например на тхтЯ хочу вытаскивать по тегам данные с шаблонного пдф