Wer kann mir diese Funktion korrekt in Java umschreiben

Bloomi

Grünschnabel
Hallo,

ich habe ein Problem, ich habe hier zwei bzw. eine Funktion welche ich in Java Konvertieren muss. Ich bringe es aber einfach nicht zusammen. Wer könnte mir auf die schnelle diese Funktion umschreiben.

unsigned char CRC8;
//************************************************************
//************************************************************
void CRC8_Init(void)
{
CRC8 = 0xC7;
}
//************************************************************
//************************************************************
unsigned char Create_CRC8(unsigned char InByte)
{
unsigned char CRC8_Count;

CRC8 ^= InByte;
for(CRC8_Count=0;CRC8_Count<8;CRC8_Count++)
{
if(CRC8&0x80)
CRC8=(CRC8<<1)^0x1D;
else
CRC8<<=1;
}
return CRC8;
}
//************************************************************
//************************************************************

Im voraus schon mal vielen Dank für die Unterstützung
 
Hi,

wo liegt denn genau dein Problem. Abgesehen davon, dass Java kein unsigned kennt und du in der if nen != 0 hinzufügen musst, sehe ich da keine größeren Probleme.

Gruß
Daniel
 
Mein Versuch würde wie folgt aussehen:
Code:
char crc8;
	
	public CRC8()
	{
		crc8 = 0x07;
	}
	
	public char CreateCRC8(char inByte)
	{
				
		this.crc8 ^= inByte;
		
		for(int crc8Count = 0; crc8Count<8; crc8Count++)
		{
			if( (this.crc8 & 0x80) != 0)
			{
				this.crc8 = ( this.crc8 << 1) ^ 0x1D;
			}else
			{
				this.crc8<<=1;
			}
		}
		
		return this.crc8;
	}
Das Problem liegt in folgender Zeile:
Code:
this.crc8 = ( this.crc8 << 1) ^ 0x1D;
da bekomme ich ein Type mismatch: cannot convert from int to char
 
Ich nehme mal an, dass das ganze nen C/C++ port ist?
Von daher könntest du vllt. besser byte anstelle von char nehmen (chars sind in java 16bit).
Dann kannst du die eine Zeile so lösen:
Java:
this.crc8 = (byte)((this.crc8 << 1) ^ 0x1D)

Oder du nimmst direkt Shorts/Integer? Da weiß ich dann aber nicht, ob die Funktion wirklich noch das gleiche tut (wegen der Shift Operation).

Hoffe das hilft dir weiter,
Daniel
 

Neue Beiträge

Zurück