Autor Beitrag
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 09.02.05 15:37 
Das Alphabet umfasst 26 Zeichen, 29 wenn man öüä mitnimmt.
das ganze mal 2 (man braucht Gross/Kleinbuchstaben), wären 58.
so nun noch .,;:!? hinzu und wir haben 64 zeichen. damit sollte man jeden deutschen text darstellen können (aufs scharf-s verzichte ich aus platzgründen.

sooooo.... 64 * 4 = 256, also kann man rein theoretisch 4 "Deutsch-Bytes" in ein Byte packen.

angenommen unser text ist 'blub'
b wäre dann 2
l 12
u 21

unser DB (deutschbyte) wäre also 2,12,21,2

das db wäre so aufgegliedert:

000..063 : DB1
064..127 : DB2
128..191 : DB3
192..255 : DB4

so, wenn man jetzt aber ein byte in 4 teile aufsplittet hat man noch 2 bit pro teil.
mit 2 bit kann man aber nur 4 verschiedene zustände anzeigen.

man könnte jetzt also die werte des deutschbytes zusammenzählen, summe wäre beim beispiel 37.
:arrow: blöderweise weiss ich jetzt aber nicht mehr, welches DB wie lange ist.

gibts es eine mathematische möglichkeit, das umzusetzen, so dass man die einzelnen 4 werte aus dem byte extrahieren kann ?
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 09.02.05 15:40 
Achtung! 64 Zeichenmöglichkeiten = 6 Bit. 8 machen ein Byte aus. Nix also mit 6*4 = 8 ;)

AXMD
I.MacLeod
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Mi 09.02.05 15:43 
Du schmeißt hier alles durcheinander. Ein Byte hat 8 bit (Zahlenbereich 0..255). Der Zahlenbereich 0..63 lässt sich durch 6 bit darstellen, du könntest also 4 Zeichen in 3 Bytes unterbringen.

Zitat:
gibts es eine mathematische möglichkeit, das umzusetzen, so dass man die einzelnen 4 werte aus dem byte extrahieren kann ?


Ja, aber nur wenn du dich auf 4 Zeichen beschränkst :-P

Ansonsten kannst du dir mal shl/shr und or/+ angucken.

_________________
{$APPTYPE CONSOLE}uses SysUtils;const a='{$APPTYPE CONSOLE}uses SysUtils;const a=%s;begin write(Format(a,[#39+a+#39]))end.';begin write(Format(a,[#39+a+#39]))end.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mi 09.02.05 15:44 
hättest dann ja ne tolle komprimierung gefudnen (aber ich behaupte aml es geht nicht) sonst könntest auch bei 1 byte immer alles zusammen rechnen

z.b. haste #23#12#120#2#3#2#1#1#3 -> 167

das könnte man als 1 byte abspeichern aber draaus kommste nie mehr zum anfang, selbst wenn wüßtest das du 9 bytes hast

in deinem fall kann ja auch 2,12,21,2 -> 1,12,21,3 sein etc.
wenn das gehen würde könntest also immer weiter komprimieren
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 09.02.05 15:47 
Falls du so eine Methode implementierst rat ich dir, sie zum Patent anzumelden :twisted:

AXMD
MitschL
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 211

Win 98 SE, Win 2000
D5 Pers, D6 Pers und D7 Pro
BeitragVerfasst: Mi 09.02.05 17:18 
Hm,

ich würde : oder ; weglassen und ein Leerzeichen erlauben. :)
Aber das nur mal so am Rande...

gegrüßt!

_________________
"Bloßes Ignorieren ist noch keine Toleranz." (Theodor Fontane)