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 aus

    wat 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...


Anmelden zum Antworten