- Beiträge
- 24.198
- Reaktionspunkte
- 7.683
-> Hier kostenlos registrieren
Ich muß mit einer S7-xxxx einen Zahlenwert 1..24 umcodieren in die 24 Möglichkeiten, 4 unterschiedliche Ziffern in einer Reihe anzuordnen:
1 --> 1234
2 --> 1243
3 --> 1324
4 --> 1342
5 --> 1423
6 --> 1432
7 --> 2134
8 --> 2143
...
24 --> 4321
Es soll ausdrücklich keine Lookup-Tabelle verwendet werden. Ich habe das jetzt mit einer Fallunterscheidung der 24 Fälle (CASE, bzw. in AWL mit SPL) programmiert. Geht das vielleicht auch kürzer? Kennt jemand eine Formel oder einen Algorithmus, um aus 1..24 (oder 0..23
) die Kombination zu "berechnen" oder einen Bit Hack?
Ich habe das Gefühl, daß da was gehen müsste, komme aber nicht drauf. Im Internet finde ich keine Lösung, vielleicht verwende ich nicht die richtigen Suchworte?
Das Ergebnis darf als ein Dezimalwert oder BCD-Wert oder als 4 einzelne Werte herauskommen, es soll sowieso in 4 INT-Variablen zerlegt werden.
Harald
1 --> 1234
2 --> 1243
3 --> 1324
4 --> 1342
5 --> 1423
6 --> 1432
7 --> 2134
8 --> 2143
...
24 --> 4321
Es soll ausdrücklich keine Lookup-Tabelle verwendet werden. Ich habe das jetzt mit einer Fallunterscheidung der 24 Fälle (CASE, bzw. in AWL mit SPL) programmiert. Geht das vielleicht auch kürzer? Kennt jemand eine Formel oder einen Algorithmus, um aus 1..24 (oder 0..23

Ich habe das Gefühl, daß da was gehen müsste, komme aber nicht drauf. Im Internet finde ich keine Lösung, vielleicht verwende ich nicht die richtigen Suchworte?
Das Ergebnis darf als ein Dezimalwert oder BCD-Wert oder als 4 einzelne Werte herauskommen, es soll sowieso in 4 INT-Variablen zerlegt werden.
Harald