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
Du meinst wahrscheinlich zwei Bytes. Welche Sprache denn überhaupt? Zeig doch mal deinen Code.
Stimmt, Byte. Gibt keinen Code, nur zwei Hex-Werte. 2B 0F zb. Wie kann man daraus eine Zahl bilden?
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
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.
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.
ubuntuli, ich muß aber aus den 2Zahlen eine machen, da es eine Zahl ist... und ich kann kein Wort C..
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.
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.
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
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 ...
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
Horst V. schrieb: > Wenn ihr nicht helfen wollt, lasst doch das rumätzen. Hotschi hat soeben mein Helfersyndrom übernommen. Ich fühle mich erleichtert.
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
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.
@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
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 :)
Max schrieb: > Mit euren Ideen kann ich etwas > anfangen :) Glaube ich nicht, deine Fragen sind schon zu dämmlich!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.