byte[4] zu int konvertieren



  • konnte es mir nicht verkneifen 😃
    also wie immer der Vollständigkeit halber:

    char array[5]={'1','2','3','4','\0'};
    int num=0;
    for(int i=0; i<4 ;i++){
        num *= 10;
        num += (int)(array[i]-'0');
    }
    //oder
    int num2 = (int)((array[0]-'0')*1000+(array[1]-'0')*100+(array[2]-'0')*10+(array[3]-'0'));
    //oder
    int num3 = (int)(array[0]*1000+array[1]*100+array[2]*10+array[3]-'0'*1111);
    //oder......
    


  • otze schrieb:

    char array[4];
    int* intZeiger=static_cast<int*>(array);

    static_cast? sicher?

    ich wäre für reinterpret_cast



  • @otze: error C2440: 'static_cast' : cannot convert from 'char [4]' to 'int *' 😞



  • hmmmmmm schrieb:

    ich wäre für reinterpret_cast

    ich auch

    @freshman: IMHO geht es hier tatsächlich um eine Binärrepräsentation des ints, nicht um eine String->Int Umwandlung.



  • hallo,

    danke für die schnellen Antworten. Habe aber mich für die Lösung entschieden

    int wert = 0;
    for (i = 0, k = 24; i < 4; i++, k -= 8)
    	wert = daten[i] << k;
    


  • sadza79 schrieb:

    hallo,

    danke für die schnellen Antworten. Habe aber mich für die Lösung entschieden

    int wert = 0;
    for (i = 0, k = 24; i < 4; i++, k -= 8)
    	wert = daten[i] << k;
    

    ist gegenüber einem einfach cast aber eher umständlich 😕



  • Bashar schrieb:

    hmmmmmm schrieb:

    ich wäre für reinterpret_cast

    ich auch

    *kopfkratz* wieso denn das? sind die typen zur compilezeit nicht komplett bekannt?



  • otze schrieb:

    Bashar schrieb:

    hmmmmmm schrieb:

    ich wäre für reinterpret_cast

    ich auch

    *kopfkratz* wieso denn das? sind die typen zur compilezeit nicht komplett bekannt?

    Nein, static_cast ist für sowas gar nicht gedacht, sondern nur für Konvertierung von verwandten Typen und void-Zeigern.



  • otze schrieb:

    *kopfkratz* wieso denn das? sind die typen zur compilezeit nicht komplett bekannt?

    Was hat das damit zu tun? Sicher sind die Typen bekannt, C++ ist schließlich statisch getypt. Ansonsten siehe Vorposter.



  • otze schrieb:

    char array[4];
    int* intZeiger=static_cast<int*>(array);

    Funktioniert natürlich nur auf Architekturen wie z.B. x86, die kein Alignment erfordern!



  • Geo schrieb:

    otze schrieb:

    char array[4];
    int* intZeiger=static_cast<int*>(array);

    Funktioniert natürlich nur auf Architekturen wie z.B. x86, die kein Alignment erfordern!

    das funktioniert doch überhaupt nicht. weil er den falschen cast gewählt hat.


Anmelden zum Antworten