Guten Tag, aus einem String kann ich mit left,mid right bytes entnehmen. Wie funktioniert das, wenn ich eine Variable im Long-format habe? Vielen Dank. Dieter
Dieter B. schrieb: > wenn ich eine Variable im Long-format habe? rechnen oder in einen String umwandeln. 123 -> 2. Stelle 123 module 100 = 23 23 / 10 = 2
Ich hatte vergessen, dass ich mit Bascom arbeite. Wie ist das mit dem shiften und verrunden gemeint? Hast Du mal ein Beispiel. ich habe z.B. in der Variablen die Werte 123 und möchte die beiden ersten Bytes, also 12 entnehmen.
Dieter B. schrieb: > ich habe z.B. in der Variablen die Werte 123 und > möchte die beiden ersten Bytes, also 12 entnehmen. einfach durch 10 rechnen?
Dieter B. schrieb: > ich habe z.B. in der Variablen die Werte 123 und > möchte die beiden ersten Bytes, also 12 entnehmen. In einem Long mit Inhalt 123 sind die ersten beiden Bytes aber sicher nicht 12.
richtig, das "ersten beiden bytes" war jetzt nicht auf die Position innerhalb der Variablen bezogen, sondern auf die Stellen. Ich muss sicher erstmal die Länge feststellen.
Dieter B. schrieb: > Ich muss sicher erstmal die Länge feststellen. nein. Was sollte denn bei 1234 rauskommen? beschreibe doch mal etwas technischer was du willst. Vermutlich meinst du Ziffern im Dezimalsystem. Schreibt aber was von Byte und Long. Byte aus eine Long ist etwas komplett anders.
also ich habe eine variable im Long-Format. dort hinein wird eine Zahl z.B. 123 geschrieben. Je nach meiner Rechenroutine brauche ich davon alle 3 Stellen, oder die ersten beiden, oder die erste Stelle.
Dieter B. schrieb: > Je nach meiner Rechenroutine brauche ich davon alle > 3 Stellen, oder die ersten beiden, oder die erste Stelle. dann rechne so lange durch 10 bis die Anzahl von stellen übrig bleibt die du willst.
Dieter B. schrieb: > also ich habe eine variable im Long-Format. > dort hinein wird eine Zahl z.B. 123 geschrieben Da machst du einen String draus (was du mit Stelle bezeichnest macht ja nur im Dezimalformat Sinn, nicht im Binärformat) und verfährst wie zuvor. Georg
Dieter B. schrieb: > also ich habe eine variable im Long-Format. > dort hinein wird eine Zahl z.B. 123 geschrieben. Wie wird die reingeschrieben? Als Dezimalzahl 123? Das wäre in Hex eine "7B". Oder als 3 einzelne Bytes "1" "2" "3"? Oder als ASCII? Dann wäre das "0x31" "0x32" "0x33"... > Je nach meiner Rechenroutine brauche ich davon alle > 3 Stellen, oder die ersten beiden, oder die erste Stelle. Was macht deine "Rechenroutine"? Du solltest ein wenig mehr ins Detail gehen, damit jemand eine Chance hat, dir zu helfen...
Dieter B. schrieb: > ich habe z.B. in der Variablen die Werte 123 und > möchte die beiden ersten Bytes, also 12 entnehmen. Dieter B. schrieb: > also ich habe eine variable im Long-Format. ... > Je nach meiner Rechenroutine brauche ich davon alle > 3 Stellen, oder die ersten beiden, oder die erste Stelle. Da haust du mit Sicherheit gewaltig was durcheinander! Wenn du, z.B., von einer Dezimalzahl die ersten beiden Stellen haben willst, dann hat das mit Bytes gar nichts zu tuen. Und ob diese Dezimalzahl jetzt im Format long, float oder sonstwas vorliegt, spielt keine Rolle. Mit dem Dezimalsystem kennt sich so ein µC nämlich ganz schlecht aus. Deshalb musst du sowas ganz normal 'von Hand' ermitteln. z.B.:
1 | s9 = val / 1000000000 |
2 | val = val % 1000000000 |
3 | s8 = val / 100000000 |
4 | val = val % 100000000 |
5 | ... |
6 | s0 = val |
... und dann die Stellen 'je nach Rechenroutine' raussuchen. Zusatz: - Vaiable s evtl als Array (in Basic heißt das, glaube ich, Feld) - '/' ganz normal 'durch' - '%' Rest ermitteln
ich habe jetzt einfach, wie Peter II vorgeschlagen hat, immer durch 10 geteilt. Danach war immer die letzte Stelle weg. Genauso wollte ich das. Vielen Dank für die vielen Hinweise, toll. Noch eine schönen "verregneten" Abend. Dieter
Und wenn Du die wegfallende Stelle brauchst, dann nimmst Du statt Geteilt Modulo („Rest“ einer Division, Rechenzeichen %): 123 / 10 = 12 123 % 10 = 3 Grundschule: 123 / 10 = 12 Rest 3 Willst Du die zweite Stelle haben: 123 / 10 % 10 = 2 Und die Dritte: 123 / 100 % 10 = 1
Dieter B. schrieb: > ich habe z.B. in der Variablen die Werte 123 und > möchte die beiden ersten Bytes, also 12 entnehmen. Dann ist das ein String. Als Zahl würde es in ein Byte rein passen.
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.