hight un low byte in tcp/ip
Von: , Frage gestellt am Do, 24. Mär 2005
hallo,
ich habe folgendes programm.
ein c programm schickt Daten mit datentyp short zu einem java programm über socket.
aus dem c programm:
send(ClientSocket,(const char *) &s_buffer_tmp[anzahl],(laenge-anzahl),0);
s_buffer_tmp ist von type unsigned short.
zum lesen der daten aus ja heraus verwende ich inputstream.read(byte[])
auf der java seite kommen die daten als byte strom an. jede zwei benachbarte bytes sind vertauscht. ich muss immer einen swap machen und dann erst nach int konvertieren und das kostet zeit.
das problem liegt nicht an der konvertierungsfunktion
habe zwei varianten getestet.
public static int byte2tos(byte b0, byte b1) {
short temp = 0 ;
temp = (short)((b0&(short)0x00ff) << 8);
temp = (short)(temp+ (b1&(short)0x00ff)) ;
return temp;
}
private static int ByteToInt(byte b0, byte b1)
{
int ret = 0;
if(b0<0)
ret = (int)(char)(b0+256)*256;
else
ret = (int)(char)b0*256;
if(b1<0)
ret += b1+256;
else
ret += b1;
return ret;
}
weiss jemand was die ursache können, dass die reihenfolge von jede zwei benachbarten bytes falsch ist ?
Gruss
Youssef
