2 char nach int casten
-
hi
ich hab zwie char felder die ich nach int konvertieren will aber wie?
char[0] ~ 10001000, char [1] ~ 01110111
-> int ~1000100001110111
danke
-
atoi
-
char ch[2] = {0x88, 0x77}; unsigned int i = ch[0] << 8 + ch[1];
So würde ich es machen.
-
ja schön sauber:
char ch[2] = {0x88, 0x77};
unsigned int i = ch[0] << 8 + ch[1];leider klappt bei mir das bitschiften nicht??
hab es auch mal mit ner u_int versúcht:
unsingend int ui = 123;
//binär:00000000 01111011
ui << 8;
// sollte dann 01111011 00000000 sein
// aber er gibt mir 00000000 01111011 auswat is den dat?
-
YASC schrieb:
char ch[2] = {0x88, 0x77}; unsigned int i = ch[0] << 8 + ch[1];
So würde ich es machen.
Ich hab was vergessen. Nämlich:
vor ch[0] muss noch ein (unsigned int), sonst fällt das aus dem Wertebereich von char, ist in dem Fall 0.
also:
char ch[2] = {0x88, 0x77}; unsigned int i = (unsigned int)ch[0] << 8 + ch[1];
-
ui = ui << 8;
bzw. ui <<= 8;
weiß nich ob du das gemacht hast...
-
YASC schrieb:
YASC schrieb:
char ch[2] = {0x88, 0x77}; unsigned int i = ch[0] << 8 + ch[1];
So würde ich es machen.
Ich hab was vergessen. Nämlich:
for ch[0] muss noch ein (unsigned int), sonst fällt das aus dem Wertebereich von char, ist in dem Fall 0.
also:
char ch[2] = {0x88, 0x77}; unsigned int i = (unsigned int)ch[0] << 8 + ch[1];
wenn ch[1] aber jetzt größer als 127 (also eigentlich kleiner als 0 ist) weil ist ja signed, dann müsste doch dort soviel stehen wie:
ch[2] = 190;
0x88 << 8 + -60 (?);
und das wäre falsch, oder nicht? (ja könnt sein das ich mich irre) aber ich hätte ein & dazwischen gesetzt...
-
-Foo- schrieb:
wenn ch[1] aber jetzt größer als 127 (also eigentlich kleiner als 0 ist) weil ist ja signed, dann müsste doch dort soviel stehen wie:
ch[2] = 190;
0x88 << 8 + -60 (?);
und das wäre falsch, oder nicht? (ja könnt sein das ich mich irre) aber ich hätte ein & dazwischen gesetzt...Hast recht, dann aber ein |
-
ups...