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.