char[] für unsigned int

04/05/2008 - 03:14 von redagent | Report spam
Hallo ,

Ich soll einen TCP-/UDP Client für einen Server schreiben der die folge
Funktion enthàlt

void unpackData(unsigned char *b,unsigned int *a ,unsigned *b)
{
*a=(b[0] << 8) |b[1];
*b=(b[2] << 8) |b[3];
}

Verstehe nur nicht ganz wie ich den dem Server 2 unsigned int richtig
verpacken soll in einem char[].

Dachte an soetwas wie :

char c[3];
//Bits für ersten int Wert
c[0]c[1]//Bits für 2. int Wert
c[2]c[3]
Versteht dann nicht wie ich den das "reinschreiebn soll"

Wenn ich c[0]="0000" reinschreibe dann hab ich ja schon 5-Bits ,
sind die nun auf '1' gesetzt ?
Wie "sage" ich dem Server das Bit als ist 0 bzw. 1.unterpretieren soll ?
 

Lesen sie die antworten

#1 earthnut
04/05/2008 - 03:45 | Warnen spam
redagent wrote:

Hallo ,

Ich soll einen TCP-/UDP Client für einen Server schreiben der die folge
Funktion enthàlt

void unpackData(unsigned char *b,unsigned int *a ,unsigned *b)


^ ^ ^
{
*a=(b[0] << 8) |b[1];
*b=(b[2] << 8) |b[3];


^ ^ ^
}

Verstehe nur nicht ganz wie ich den dem Server 2 unsigned int richtig


^^^ ^^^
verpacken soll in einem char[].

Dachte an soetwas wie :

char c[3];


^
//Bits für ersten int Wert
c[0]> c[1]> //Bits für 2. int Wert
c[2]> c[3] ^

Versteht dann nicht wie ich den das "reinschreiebn soll"


^ ^ ^^

Wenn ich c[0]="0000" reinschreibe dann hab ich ja schon 5-Bits ,
sind die nun auf '1' gesetzt ?
Wie "sage" ich dem Server das Bit als ist 0 bzw. 1.unterpretieren soll ?


^^^ ^^^ ^^^^^^^^^^^^^^

HÎ!? c[0] ist ein char. "0000" ist ein Kette von 5 char, also Bytes --
nicht Bits! Darin steht 4 Mal 48 (dezimal für '0') und einmal 0 (als
abschließendes \0). Also 00001110 00001110 00001110 00001110 00000000
binàr.

Schlaf erst mal drüber und zieh dir morgen mal die Hilfe zu ``union''
rein.

Bastian

PS: Auf den meisten Architekturen hat ein int 32 Bit, also 4 chars.

Ähnliche fragen