C++ -> C#

0

Mógłby mi ktoś poniższy kod przetłumaczyć z C++ na C#? Tablice crc16htab i crc16ltab są typu tablica unsigned char (czyli w C# pewnie byte[]):

unsigned char hi=0, lo=0, index;
const char *s = "Ala ma kota."

printf ( "crc od '%s' wynosi: ", s);
for ( s; *s ; s++)
{
  index = hi ^ *s;
  hi = lo ^ crc16htab[index];
  lo = crc16ltab[index];
}
printf ( "%04X", (hi << 8) | lo );
0

Jakoś tak:

static void Main(string[] args)
{
	byte[] crc16htab = null;
	byte[] crc16ltab = null;

	byte hi = 0, lo = 0, index;
	string s = "Ala ma kota";

	Console.Write($"crc od '{s}' wynosi: ");
	foreach(var ch in s)
	{
		index = (byte)(hi ^ (byte)ch);
		hi = (byte)(lo ^ crc16htab[index]);
		lo = crc16ltab[index];
	}

	Console.WriteLine($"{(hi << 8) | lo}");
}

Fakturę prześlę mailem ;)

0
Juhas napisał(a):

Jakoś tak:

static void Main(string[] args)
{
	byte[] crc16htab = null;
	byte[] crc16ltab = null;

	byte hi = 0, lo = 0, index;
	string s = "Ala ma kota";

	Console.Write($"crc od '{s}' wynosi: ");
	foreach(var ch in s)
	{
		index = (byte)(hi ^ (byte)ch);
		hi = (byte)(lo ^ crc16htab[index]);
		lo = crc16ltab[index];
	}

	Console.WriteLine($"{(hi << 8) | lo}");
}

Fakturę prześlę mailem ;)

gdzieś po drodze powinno być: Encoding.Default.GetBytes, żeby to naprawdę było równoważne wersji C.
Poza tym pisanie wszystkiego w main strasznie mnie mierzi. Nieważne, że to tylko kod demo, to wyrabia złe nawyki u początkujących.

1 użytkowników online, w tym zalogowanych: 0, gości: 1