kzzk84
یک شنبه 28 خرداد 1391, 03:15 صبح
سلام دوستان من میخوام سه تابع از C# به PHP تبدیل کنم بیشتر تو جنبه تبدیل نوع ها مشکل دارم این سه تابع از یک کلاسه
void make_crc_revtable()
{
UInt32 c;
int n, k;
for (n = 0; n < 256; n++)
{
c = (uint)n << 3 * 8;
for (k = 0; k < 8; k++)
{
if ((c & 0x80000000) != 0)
{
c = ((c ^ CRCPOLY) << 1) | 1;
}
else
{
c <<= 1;
}
}
crc_revtable[n] = c;
}
}
private void make_crc_table()
{
UInt32 c;
int n, k;
for (n = 0; n < 256; n++)
{
c = (UInt32)n;
for (k = 0; k < 8; k++)
{
if ((c & 1) != 0)
{
c = CRCPOLY ^ (c >> 1);
}
else
{
c = c >> 1;
}
}
crc_table[n] = c;
}
}
uint fix_crc_pos(ref byte[] buffer, int length, UInt32 tcrcreg, int fix_pos)
{
int i;
// make sure fix_pos is within 0..( length -1)
fix_pos = ((fix_pos % length) + length) % length;
// calculate crc register at position fix_pos ; this is essentially crc32 ()
UInt32 crcreg = INITXOR;
for (i = 0; i < fix_pos; ++i)
crcreg = (crcreg >> 8) ^ crc_table[((crcreg ^ buffer[i]) & 0xFF)];
// inject crcreg as content
crcreg &= 0xFFFFFFFF;
byte[] newData = BitConverter.GetBytes(crcreg);
for (i = 0; i < 4; ++i)
buffer[fix_pos + i] = newData[i];
// calculate crc backwards to fix_pos , beginning at the end
tcrcreg ^= FINALXOR;
for (i = length - 1; i >= fix_pos; --i)
{
tcrcreg = (tcrcreg << 8) ^ crc_revtable[tcrcreg >> 3 * 8] ^ buffer[i];
}
// inject new content
return (tcrcreg &= 0xFFFFFFFF);
}
تا هر اندازه بتونید کمک کنید ممنون میشم حتی اگر یه لینک باشه
تابع آخریه خیلی مهم تره
void make_crc_revtable()
{
UInt32 c;
int n, k;
for (n = 0; n < 256; n++)
{
c = (uint)n << 3 * 8;
for (k = 0; k < 8; k++)
{
if ((c & 0x80000000) != 0)
{
c = ((c ^ CRCPOLY) << 1) | 1;
}
else
{
c <<= 1;
}
}
crc_revtable[n] = c;
}
}
private void make_crc_table()
{
UInt32 c;
int n, k;
for (n = 0; n < 256; n++)
{
c = (UInt32)n;
for (k = 0; k < 8; k++)
{
if ((c & 1) != 0)
{
c = CRCPOLY ^ (c >> 1);
}
else
{
c = c >> 1;
}
}
crc_table[n] = c;
}
}
uint fix_crc_pos(ref byte[] buffer, int length, UInt32 tcrcreg, int fix_pos)
{
int i;
// make sure fix_pos is within 0..( length -1)
fix_pos = ((fix_pos % length) + length) % length;
// calculate crc register at position fix_pos ; this is essentially crc32 ()
UInt32 crcreg = INITXOR;
for (i = 0; i < fix_pos; ++i)
crcreg = (crcreg >> 8) ^ crc_table[((crcreg ^ buffer[i]) & 0xFF)];
// inject crcreg as content
crcreg &= 0xFFFFFFFF;
byte[] newData = BitConverter.GetBytes(crcreg);
for (i = 0; i < 4; ++i)
buffer[fix_pos + i] = newData[i];
// calculate crc backwards to fix_pos , beginning at the end
tcrcreg ^= FINALXOR;
for (i = length - 1; i >= fix_pos; --i)
{
tcrcreg = (tcrcreg << 8) ^ crc_revtable[tcrcreg >> 3 * 8] ^ buffer[i];
}
// inject new content
return (tcrcreg &= 0xFFFFFFFF);
}
تا هر اندازه بتونید کمک کنید ممنون میشم حتی اگر یه لینک باشه
تابع آخریه خیلی مهم تره