Forum: Mikrocontroller und Digitale Elektronik Berechnen einer Word-Variablen aus ihren 2 Bits


von Max (Gast)


Lesenswert?

Hallo Leute, vielleicht etwas komisch formuliert, aber ich kann es nicht 
besser:

Ich habe die 2 Bits einer Wordvariable, ausgelesen aus einer Log-Datei. 
Ich habe jetzt also zwei Hex-Variablen, wie mache ich aus diesen beiden 
eine Word-Variable? Danke

von A. G. (grtu)


Lesenswert?

Du meinst wahrscheinlich zwei Bytes. Welche Sprache denn überhaupt? Zeig 
doch mal deinen Code.

von Max (Gast)


Lesenswert?

Stimmt, Byte. Gibt keinen Code, nur zwei Hex-Werte. 2B 0F zb. Wie kann 
man daraus eine Zahl bilden?

von Einer K. (Gast)


Lesenswert?

(0x2B<<8)|0x0F

von Christian S. (roehrenvorheizer)


Lesenswert?

Thema:
  Word-Variable in Byte verwandeln:

  Beitrag "word -> 2 bytes"


  word w;
  byte blow,bhigh;

  bl = w & 0xFF;
  bh = w >> 8;




  Re: uint16 zu uint8 und zurück
  Autor: Laszlo H. (laszlo_h)
  Datum: 02.06.2011 18:48

  Simon schrieb:
  > // Von zwei byte auf 1 word
  > word  = 1byte << 8;
  > word |= 2byte

  Als Einzeiler:

  word = (1byte << 8) | 2byte;


  Danke, jetzt brauch ich nur noch den Weg wieder zurück
  Also vom Word wieder in zwei bytes aufteilen


  Re: uint16 zu uint8 und zurück
  Autor: DirkB (Gast)
  Datum: 02.06.2011 19:16

  1byte = word >> 8;    // 1 Byte ist das höherwertige Byte
  2byte = word & 0xff;  // 2 Byte ist das niederwertige

von ubuntuli (Gast)


Lesenswert?

2B 0F
Sind zwei 16Bit Hexdezimal Ziffern.
0-9 A-F Hexdezimal.
A=10 bis F=14
Links ist immer *8 rechts ist immer *1
2B
2*8+1*11=27
0F
0*8+1*14 =14
Du kannst aus beiden Ziffern nicht eine machen. Beide sind getrennt.
Nach ASCII Zeichensatz ist 2B ein + und 0F Enter/Eingabe.

von steno (Gast)


Lesenswert?

ubuntuli schrieb:
> Links ist immer *8 rechts ist immer *1

Wie cool is dat denn? Alles linken sind Sternchen acht und alle rechten 
Sternchen eins.

von Dirk B. (dirkb2)


Lesenswert?

ubuntuli schrieb:
nur Müll, fast alles falsch

von Max (Gast)


Lesenswert?

ubuntuli, ich muß aber aus den 2Zahlen eine machen, da es eine Zahl 
ist...


und ich kann kein Wort C..

von Einer K. (Gast)


Lesenswert?

Max schrieb:
> und ich kann kein Wort C..
Dann bist du der falsche Reiter auf dem falschen Pferd.

Klarer:
Ihr beiden werdet vermutlich nicht da ankommen, wo du hin willst.

von Stefan F. (Gast)


Lesenswert?

Max schrieb:
> und ich kann kein Wort C

Wenn du ein C Programm ändern willst, musst du C lernen.

Mache es, oder lasse es sein.

von Thomas S. (thschl)


Lesenswert?

Max schrieb:
> Ich habe die 2 Bits einer Wordvariable, ausgelesen aus einer Log-Datei.
> Ich habe jetzt also zwei Hex-Variablen, wie mache ich aus diesen beiden
> eine Word-Variable? Danke

Da du in keinster Weise schreibst in welcher Programmiersprache und von 
was die 2 Zahlen sind, schütte sie in ein Glas und rühre um.

Eine Zahl ist das Hi-Byte das andere das Lo-Byte, aber wenn du schon 
nicht weisst in welcher Reihenfolge das vorliegt.. der Bäcker backt 
Brötchen

von Hugo H. (hugohurtig1)


Lesenswert?

Max schrieb:
> Wie kann
> man daraus eine Zahl bilden?

Mit dem Windows-Taschenrechner (Programmierer-Modus).

Mit einfachen Multiplikationen.

Mit einem selbst geschriebenen Programm.

Mit Excel.

Mit ...

von Horst V. (hoschti)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wenn du ein C Programm ändern willst, musst du C lernen.

Wo steht denn, das der TO ein C-Programm ändern will.

Soweit ich es verstanden habe, soll aus zwei Byte einer Log-Datei, die 
ein Word repräsentieren, der Wert  dieses Word berechnet werden.

@Max: Falls das so nicht stimmt, bitte korrigieren. Für die Zukunft: 
Versuche Dein Problem möglichst so zu beschreiben, dass ein vollkommen 
Unbedarfter Dir sinnvoll antworten kann.

Ich versuche mich mal an einer Lösung:

Gegeben: zwei Zahlen in Hex-Darstellung:
Z1: ab  (z.B. 2A)
Z2: cd  (z.B. 0F)

Zunächst wandelt man die beiden Zahlen mal in Dezimalzahlen um. Dazu 
muss Du noch wissen, das die Ziffern A bis F den Wert 10 (A) bis 15 (F) 
haben. Zu Not einfach mal mal im Lexikon Deiner Wahl nachschauen 
("hexadezimal" als Suchwort sollte helfen). Dann ermitteln wir den 
Dezimalwert der beiden Zahlen:

 Z1= (a * 16) + b (Beispiel: 2*16 + 10 = 42)
 Z2= (c * 16) + d (Beispiel: 0*16 + 15 = 15)

Jetzt kommt es darauf an, welche der Beiden Zahlen der höherwertige Teil 
Deiner gesuchten Word-Variablen ist (nennt sich auch High-Byte). Das 
hängt von der Ablage-Art des erzeugenden Programms ab, welche die 
Log-Datei erzeugt hat. Es gibt da zwei Möglichkeiten:
a) Z1 ist High-Byte
oder
b) Z2 ist High-Byte

Allgemein muss man rechnen:
High-Byte * 256 + Low-Byte ergibt den gesuchten Wert.

Bei menem Beispiel:
a) Wert = (42 * 256) + 15 = 10767
b) Wert = (15 * 256) + 42 = 3882

Jetzt sollte hoffentlich alles klar sein.

Und an alle anderen Helferlein:
Wenn ihr nicht helfen wollt, lasst doch das rumätzen. Schubsen in die 
richtige Richtung ist ja OK. Aber es ist doch klar zu erkennen gewesen, 
dass der TO ein blutiger Anfänger ist. Also an die Hand nehmen oder 
Finger ewg von der Tastatur!!

Grüße
Hoschti

von Stefan F. (Gast)


Lesenswert?

Horst V. schrieb:
> Wenn ihr nicht helfen wollt, lasst doch das rumätzen.

Hotschi hat soeben mein Helfersyndrom übernommen. Ich fühle mich 
erleichtert.

von Adam P. (adamap)


Lesenswert?

Stefan ⛄ F. schrieb:
> Hotschi hat soeben mein Helfersyndrom übernommen. Ich fühle mich
> erleichtert.

:-D
Aber ich finde irgendwie viel zu kompliziert...

Max schrieb:
> Ich habe jetzt also zwei Hex-Variablen, wie mache ich aus diesen beiden
> eine Word-Variable?

Falls ein 16Bit Wert als 2 einzelne Bytes in der Log stehen,
also deine 0x2B und 0x0F, dann musst du nur wissen welche Logik
beim schreiben der Log verwendet wurde:
- Big-Endian oder
- Little-Endian

Dann ist es entweder:
0x2B0F = 11023
oder
0x0F2B = 3883

: Bearbeitet durch User
von Udo S. (urschmitt)


Lesenswert?

Vieleicht stellt ihr erst mal die richtigen Fragen

Max schrieb:
> ausgelesen aus einer Log-Datei
1. Womit ausgelesen

Max schrieb:
> Ich habe jetzt also zwei Hex-Variablen

2. In welcher Form?
  2.1 Als String "2B" und "0F"
  2.2 oder als Byte Wert in denen als Hex ausgedrückt 2B und 0F steht

Max schrieb:
> wie mache ich aus diesen beiden eine Word-Variable?
3. Mit welchem Hilfsmittel? Einem Editor, einer Programmiersprache, ...?
4. Wie wurden diese Werte in die Log Datei geschrieben, wie die 
Vorposter schon gesagt haben gibt es System, die bei dem Wert 0x1234 
schreiben "12" "34" und andere die schreiben "34" "12". Das musst du 
wissen.

von Passant mit Mundschutz (Gast)


Lesenswert?

@Hoschti
Ich bin zwar nur ein harmloser Passant, aber: Applaus für Deinen 
Beitrag.
Der ist richtig gut, verständlich und hilfreich. Da kann sich manch 
ein Selbstdarsteller eine Anregung holen.

+10

von Max (Gast)


Lesenswert?

urschmitt du stellst aber nicht die richtigen Fragen.  Oder wie soll 
deine Fragw womit ich ausgelesen habe, irgendwas mit dem Umrechnen zu 
tun haben?
also spiele dich nicht so auf. Danke

adamp und hotschi, ich danke euch :) Mit euren Ideen kann ich etwas 
anfangen  :)

von kannAllesbesser! (Gast)


Lesenswert?

Max schrieb:
> Mit euren Ideen kann ich etwas
> anfangen  :)

Glaube ich nicht, deine Fragen sind schon zu dämmlich!

von Funkdepphasser (Gast)


Lesenswert?

Thomas S. schrieb:

> Da du in keinster Weise schreibst

Aber auch in gar keinster und überhaupt gar keinster Weise...
Lern erstmal Deutsch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.