Hex Werte combinieren
-
Mahlzeit. Sehe mich jetzt gezwungen hier im forum jemanden zu fragen.
da ich nach stundenlanger suche mit google nix brauchbares gefunden habe.zu meinem problem.
Char data[2]; data[0]=0xCA; data[1]=0xCB;wie combiniere ich die beiden werte jetzt sodass sowas hier bei rauskommt
__int16=0xCACB;wohlbemerkt ich möchte die werte nicht addieren

hoffe das mir hier jemand helfen kann.vielen dank im vorraus
-
__int16=(data[1]<<8)|data[0];
-
Funktioniert leider nicht. keine ahnungs was da passiert aber da kommt nicht das raus was ich benötige.
könntest du mir vielleicht erklären was du da versucht hast?
-
MeOnXtc schrieb:
Funktioniert leider nicht. keine ahnungs was da passiert aber da kommt nicht das raus was ich benötige.
könntest du mir vielleicht erklären was du da versucht hast?ich habe versucht, data[1] umd 8 bits nach links zu schieben, was aus 0xCB hätte 0xCB00 machen sollen. und das rechne ich bitweise oder mit 0xCA und 0xCBCA kommt raus.
was kam denn statt 0xCBCA raus?
-
__int16=(data[0]<<8)|data[1];
-
int main() { char data[2]; data[0]=0xCA; data[1]=0xCB; __int16 y=(data[1]<<8)|data[0]; printf("%X ",y); system("pause"); }so kommt FFFFFFCA bei raus
-
@MeOnXtc
Google mal nach big- und little Endian und verrate uns das Format indem bei Dir ein __int16 (short)
abgespeichert wird.
-
Lol das sieht man doch an meinem post eben.
FFFFFFCA deutet wohl auf Big endian hin
-
MeOnXtc schrieb:
Lol das sieht man doch an meinem post eben.
FFFFFFCA deutet wohl auf Big endian hin
So schnell konnte ich nicht sein - Du scheinst Dich jedenfalls auszukennen.

-
so gehts.
#include<cstdio> using namespace std; int main() { unsigned char data[2]; data[0]=0xCA; data[1]=0xCB; __int16 y=(data[0]<<8)|data[1]; printf("%X ",y); }die weiteren F bei der ausgabe sind ein printf-problem, kannste auch noch wegmachen mit
#include <cstdio> #include <iostream> using namespace std; int main() { unsigned char data[2]; data[0]=0xCA; data[1]=0xCB; __int16 y=(data[0]<<8)|data[1]; cout<<hex<<y; }
-
das gibs ja ganet das geht!!!

vielen dank für die schnelle hilfe.
tolles forum ich werds weiter empfehlen